#!/usr/bin/env python
import sys, os
sys.path.insert(0, os.path.dirname(os.getcwd()))
from configo.configo import Configo, ConfigoNotExistingKeyError
from configo import version as configo_version


configo = Configo()

def get_key(config_path, keyname):
    try:
        result = configo.get_key(config_path, keyname)
        sys.stdout.write(result)
        sys.exit(0)
    except ConfigoNotExistingKeyError:
        print "Error: You are searching for not existing key"
        sys.exit(1)


def run_configo():
    """Parsing arguments and do something :)"""
    if len( sys.argv ) == 1 or sys.argv[1] == 'help' or sys.argv[1] == '-h' or sys.argv[1] == '--help':
        help()
        sys.exit(1)
    else:
        command = sys.argv[1]

        if command == 'from':
            try:
                config_path = sys.argv[2]

                try:
                    getarg = sys.argv[3]
                    if getarg == 'get':
                        try:
                            keyname = sys.argv[4]
                            get_key(config_path, keyname)

                        except IndexError:
                            print "Please tell me what key you want"
                            print "For example: configo from {0} get some.key".format(config_path)
                            sys.exit(1)

                except IndexError:
                    print "Usage: configo from config.json get some.key"
                    sys.exit(1)

            except IndexError:
                print "Please fill config path"
                print "For example: configo from /config/path/config.json"
                sys.exit(1)
        elif command == 'get':
            if not configo.tmp_conf_name:
                print "If you want to use this short syntax you must define in your shell script CONFIGO_CONF variable that configo will use."
                print "For example:"
                print "export CONFIGO_CONF='/some/config.json'"
                print "configo get some.key"
                sys.exit(1)
            else:
                config_path = configo.tmp_conf_name
                try:
                    keyname = sys.argv[2]
                    get_key(config_path, keyname)
                except IndexError:
                    print "Please enter key that you want from the config"
                    print "For example:"
                    print "configo get some.key"
                    sys.exit(1)

        elif command == 'version':
            print configo_version
            sys.exit(0)

        else:
            try:
                keyname = sys.argv[2]
                get_key(command, keyname)

            except IndexError:
                print "Usage: configo config.json some.key"
                sys.exit(1)


def help():
    """print help info"""
    print("Usage: configo [action] [arguments] ...\n")
    print("Actions:")
    print("\thelp, -h, --help          show help message and exit")
    print("\tfrom [config.json] get [some.key]")
    print("\t[config.json] [some.key]")
    print("\tget [some.key]")
    print("\tversion")

    sys.exit(0)

if __name__ == '__main__':
    run_configo()
