#!/usr/bin/env python

import os
import sys

sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir))

from clockifytool.api import ClockifyApi
from clockifytool import app
from clockifytool import cli
from clockifytool import commands


# Load configuration
config = app.load_config()

# Authenticate
clockify = ClockifyApi(config['api key'])

# Display available workspaces or set workspace
if 'workspace' not in config:
    config_path = os.path.join(os.path.expanduser('~'), config['filename'])
    print('Please set workspace ID as "workspace" in {}.'.format(config_path))
    print("\nAvailable workspaces:")
    commands.list_workspaces(None, None, {'clockify': clockify})
    sys.exit(1)
else:
    clockify.set_workspace(config['workspace'])

# Parse CLI arguments
parser = cli.arg_parser()
args = parser.parse_args(cli.preprocess_argv())
args = cli.validate_args(parser, args, config)

# Execute command
app_data = {'clockify': clockify}

command_function = getattr(commands, args.func)
command_function(args, config, app_data)
