#!/usr/bin/env python

'''
Usage:
        get-aws-secret --region <region> --secret <secret_name> --tag <tag> --section <section>
        get-aws-secret --region <region> --secret <secret_name> --tag <tag> --sections
        get-aws-secret --region <region> --secret <secret_name> --tags
'''

import json
from snap import common
import requests
import boto3
import docopt


def main(args):
    secret_name = args['<secret_name>']
    tag = args['<tag>']
    section = args['<section>']
    
    asm_client = boto3.client('secretsmanager', region_name=args['<region>'])        
    secrets = asm_client.get_secret_value(SecretId=secret_name)
    secret_data = secrets['SecretString']
    secret_dict = json.loads(secret_data)

    if args['--tags']:
        for key in secret_dict.keys():
            print(key)
        return

    if args['--sections']:
        if not secret_dict.get(tag):
            raise Exception('No configuration tag "%s" found in secret "%s".' % (tag, secret_name))
        for key in secret_dict[tag].keys():
            print(key)
        return

    if not secret_dict.get(tag):
        raise Exception('No configuration tag "%s" found in secret "%s".' % (tag, secret_name))

    if not secret_dict[tag].get(section):
        raise Exception('No configuration section "%s" found in secret data.' % section)

    print(json.dumps(secret_dict[tag][section]))
    


if __name__ == '__main__':
    args = docopt.docopt(__doc__)
    main(args)
