#!/usr/bin/env python3

import json

import click

from pathlib import Path

from habu.lib.loadcfg import loadcfg

from cryptography.fernet import Fernet


@click.command()
@click.option('-w', 'writecfg', is_flag=True, default=False, help='Write this key to ~/.habu.json')
def cmd_crypto_fernet_genkey(writecfg):
    """Generate a new Fernet Key, optionally write it to ~/.habu.json

    Example:

    \b
    $ habu.crypto.fernet.genkey
    xgvWCIvjwe9Uq7NBvwO796iI4dsGD623QOT9GWqnuhg=
    """

    key = Fernet.generate_key()
    print(key.decode())

    if writecfg:
        habucfg = loadcfg(environment=False)
        habucfg['FERNET_KEY'] = key.decode()
        with Path('~/.habu.json').expanduser().open('w') as f:
            f.write(json.dumps(habucfg, indent=4, sort_keys=True))

if __name__ == '__main__':
    cmd_crypto_fernet_genkey()