#!python
import sys
import optparse
import acmd

parser = optparse.OptionParser("acmd [options] <command> <args>")
parser.add_option("-s", "--server", dest="server",
                  help="server name", metavar="str")

def split_argv(argv):
    """ Split argument list into system arguments before the command
    and command arguments afterwards.
    ['foo', 'bar', 'inspect', 'bink', 'bonk']
        => (['foo', 'bar', 'inspect'], ['inspect', 'bink', 'bonk'])"""
    for i, arg in enumerate(argv):
        if acmd.get_command(arg) is not None:
            return argv[0:i+1], argv[i:]
    return argv, []


if __name__ == '__main__':
    sysargs, cmdargs = split_argv(sys.argv)
    (options, args) = parser.parse_args(sysargs)
    if len(args) == 1:
        parser.print_help()
        sys.exit(0)
    else:
        cmd_name, args = args[1], []

    server = acmd.get_server(options.server)

    cmd = acmd.get_command(cmd_name)
    if cmd is None:
        sys.stderr.write("error: command '{cmd}' not found.\n".format(cmd=cmd_name))
        status = 1
    else:
        status = cmd.execute(server, cmdargs)
    sys.exit(status)
