#!/usr/bin/env python
import argparse
import os
import json

from pysmarhome_cli.list import list_devs
from pysmarhome_cli.action import trigger_action
from pysmarhome_cli.scene import activate_scene

config_path = os.path.join(os.getenv('HOME'), '.config', 'pysmarthome', 'config.json')
parser = argparse.ArgumentParser()

options = parser.add_argument_group('OPTIONS')
options.add_argument(
    '--host',
    metavar='IP',
    help='server address',
    required=True,
)
options.add_argument(
    '--api-key',
    metavar='KEY',
    help='API key.',
    required=True,
)

subparsers = parser.add_subparsers()
trigger_parser = subparsers.add_parser('trigger')
trigger_parser.add_argument('action', nargs='+')
trigger_parser.set_defaults(func=trigger_action)

scene_parser = subparsers.add_parser('scenes')
scene_parser.add_argument('id', nargs=1)
scene_parser.set_defaults(func=activate_scene)

list_parser = subparsers.add_parser('list',
    help='list all available devices and its current state')
list_parser.set_defaults(func=list_devs)

if os.path.exists(config_path):
    with open(config_path) as f:
        config = json.load(f)
        parser.set_defaults(**config)

    for action in parser._actions:
        if action.dest in config:
            action.required = False

args = parser.parse_args()
if 'func' not in args:
    list_devs(args)
else:
    args.func(args)
