#!/usr/bin/env python3
import os
import base64
import subprocess

from jinja2 import Environment, FileSystemLoader


def generate_random(length):
    # Emulate the {"stdout": "..."} dictionaries Ansible produces when configuring non-development environments.
    return {'stdout': base64.b64encode(os.urandom(length)).decode()}


env = Environment(loader=FileSystemLoader("."))

ctx = {
    "securedrop_app_gpg_fingerprint": "65A1B5FF195B56353CC63DFFCC40EF1228271441",
    'source_secret_key': generate_random(32),
    'journalist_secret_key': generate_random(32),
    'scrypt_id_pepper': generate_random(32),
    'scrypt_gpg_pepper': generate_random(32),
    'redis_password': generate_random(32),
}

with open('securedrop/config.py', 'w') as f:
    text = env.get_template("securedrop/config.py.example").render(ctx)
    text += '\n'
    supported_locales = subprocess.check_output(['make', '--quiet', 'supported-locales']).decode().strip()
    text += f'SUPPORTED_LOCALES = {supported_locales}\n'
    f.write(text)

with open('securedrop/rq_config.py', 'w') as f:
    f.write('REDIS_PASSWORD = "{}"\n'.format(ctx['redis_password']['stdout']))
