#!/usr/bin/env python3

""" Viki cli

The automation framework

Usage:
    viki h|help
    viki ll|list
    viki r|run <job_name>

Maintainer:
    John Shanahan <shanahan.jrs@gmail.com>

License:
    Apache 2.0
    http://www.apache.org/licenses/LICENSE-2.0

"""

### Imports

import sys
from src.jobs.jobs import Jobs
from src.application.app import App

### Setup
debug = True

# Classes / globals
job = Jobs()
app = App()

version = app.version
home = app.home

print('Version: ' + version)

print('Home: ' + home)

### Private funcs

def _version():
    print({"name":"viki", "version":"0.0.1"})

def _usage():
    """ Print viki-cli usage"""
    print('Usage:')
    print('    viki h|help')
    print('    viki ll|list')
    print('    viki r|run <job_name>')
    sys.exit(1)

def _list():
    ret = job.get_jobs()
    return str(ret)

def _run(job_name):
    ret = job.run_job(job_name)
    return str(ret)

### Main

def main(args):
    """ Main """
    message = "Ok"
    success = 1

    try:

        if len(args) < 2:
            _usage()

        # First positional arg
        viki_action = args[1]

        # These lists are to make sure we capture most possible spellings of our commands
        action_help = [
            'h', '-h', '-h', 'help', '-help', '--help'
        ]

        action_list = [
            'l', '-l', '-l', 'll', '-ll', '--ll', 'list', '-list', '--list'
        ]

        action_run = [
            'r', '-r', 'run', '-run', '--run'
        ]

        # Main execution
        if viki_action in action_help:
            _usage()
        elif viki_action in action_list:
            message = str(_list())
        elif viki_action in action_run:
            message = str(_run(args[2]))
        else:
            _usage()

    except IndexError as error:
        message = str(error)
        success = 0

    # Fin
    print(message)
    sys.exit(success)

if __name__ == "__main__":
    main(sys.argv)
