#!/usr/bin/env python

import boto3
import inquirer
from botocore.exceptions import ClientError
from colorama import Fore


def put_parameter(parameter_name, parameter_value, parameter_type):
    ssm_client = boto3.client('ssm')

    try:
        result = ssm_client.put_parameter(
            Name=parameter_name,
            Value=parameter_value,
            Type=parameter_type,
            Overwrite=True
        )
    except ClientError as e:
        return None, e
    return result['Version']


def main():
    parameter_prefix = input(
        f"{Fore.LIGHTYELLOW_EX}Enter parameter prefix: {Fore.RESET}")

    while True:
        try:
            parameter_name = f"{parameter_prefix}{input(f'{Fore.LIGHTYELLOW_EX}Enter parameter name: {Fore.RESET}')}"
            parameter_value = input(
                f"{Fore.LIGHTYELLOW_EX}Enter parameter value: {Fore.RESET}")
            questions = [
                inquirer.List('parameter_type',
                              message=f"{Fore.LIGHTYELLOW_EX}Please select parameter type{Fore.RESET}",
                              choices=['String', 'SecureString', 'StringList'],
                              ),
            ]
            answers = inquirer.prompt(questions)
            parameter_type = answers["parameter_type"]
            result, e = put_parameter(
                parameter_name, parameter_value, parameter_type)
            if result:
                print(
                    f"{Fore.GREEN}Successfully created parameter: {Fore.LIGHTGREEN_EX}{parameter_name}:{parameter_value} ({parameter_type})")
            else:
                print(
                    f"{Fore.RED}Failed creating parameter, error: {Fore.LIGHTRED_EX}{e}")
            print('\n')
        except KeyboardInterrupt:
            break


if __name__ == '__main__':
    main()
