import base64
import os
import argparse
import yaml

parser = argparse.ArgumentParser()
parser.add_argument('--user', default='sak_user')
parser.add_argument('--psw')
parser.add_argument('--host', default='localhost')
parser.add_argument('--db_name', default='sak_database')
parser.add_argument('--port', default=31000)
args = parser.parse_args()
args_dict = vars(args)
key_map = {'user': 'DB_USER',
           'psw': 'DB_PASS',
           'host': 'DB_HOST',
           'db_name': 'DB_NAME',
           'port': 'DB_PORT'}
for key in args_dict.keys():
    print(os.getenv(key_map[key]))
    if os.getenv(key_map[key]) is not None:
        args_dict[key] = os.getenv(key_map[key])

assert args.psw is not None
credentials_dict = {}
for key in key_map.keys():
    credentials_dict[key_map[key]] = getattr(args, key)

for key in ['DB_USER', 'DB_PASS']:
    print(credentials_dict[key])
    credentials_dict[key] = base64.b64encode(credentials_dict[key].encode()).decode()

with open(os.path.join('credentials', 'db_credentials.yml'), 'w') as outfile:
    yaml.dump(credentials_dict, outfile)