#!/usr/bin/env python
import argparse
import inquirer
import configparser
from csv import DictReader
from sys import argv
from os import environ
from os.path import expanduser, isfile
import csv

config = configparser.ConfigParser()
home = expanduser('~')
home_creds = home + '/.aws/credentials'
config.read(home_creds)

profiles = [
    inquirer.List(
        'profile',
        message="Select a profile to set as default",
        choices=config.sections(),
    ),
]

def magic(new_profile_name):
    if new_profile_name in config:
        new_profile_name_default = config[str(new_profile_name)]
        config['default'] = new_profile_name_default
        with open(home_creds, 'w') as configfile:
            config.write(configfile)
        print(f'AWS profile `{new_profile_name}` has been set as default')
    else:
        print(f'AWS profile `{new_profile_name}` not found')
        exit(1)


parser = argparse.ArgumentParser()
parser.add_argument("--add",required=False, action='store_true')
parser.add_argument("-f","--credentials-file",required=False)
parser.add_argument("-a","--alias",required=False)
parser.add_argument("--use",required=False)
args = parser.parse_args()

if args.add:
    if args.alias:
        if isfile(args.credentials_file):
            with open(args.credentials_file, 'r') as credfile:
                reader = csv.DictReader(credfile)
                for row in reader:
                    config.add_section(args.alias)
                    config[args.alias]["aws_access_key_id"] = row['Access key ID']
                    config[args.alias]["aws_secret_access_key"] = row['Secret access key']
                    with open(home_creds, 'w') as configfile:
                        config.write(configfile)
    else:
        exit("No alias was provided")
elif args.use:
    new_profile_name = args.use
    magic(new_profile_name)
else:
    selected_new_profile_name = inquirer.prompt(profiles)
    magic(selected_new_profile_name['profile'])