#!python

import os
import sys
from pathlib import Path

from etherpump import __VERSION__


def subcommands():
    """List all sub-commands for the `--help` output."""
    subcommands = []

    all_files = os.listdir(Path().absolute() / 'etherpump' / 'commands')
    modules = filter(lambda file: not file.startswith('__'), all_files)

    for module in modules:
        name = module.split('.py')[0]
        subcommands.append(f'    {name}')

    return '\n'.join(subcommands)


usage = """
         _
        | |
  _ _|_ | |     _   ,_     _          _  _  _     _
 |/  |  |/ \   |/  /  |  |/ \_|   |  / |/ |/ |  |/ \_
 |__/|_/|   |_/|__/   |_/|__/  \_/|_/  |  |  |_/|__/
                        /|                     /|
                        \|                     \|
Usage:

    etherpump CMD

where CMD could be:

{}

For more information on each command try:

    etherpump CMD --help

""".format(
    subcommands()
)

try:
    cmd = sys.argv[1]
    if cmd.startswith("-"):
        args = sys.argv
    else:
        args = sys.argv[2:]

    if len(sys.argv) < 3:
        if any(arg in args for arg in ['--help', '-h']):
            print(usage)
            sys.exit(0)
        elif any(arg in args for arg in ['--version', '-v']):
            print('etherpump {}'.format(__VERSION__))
            sys.exit(0)

except IndexError:
    print(usage)
    sys.exit(0)

try:
    # http://stackoverflow.com/questions/301134/dynamic-module-import-in-python
    cmdmod = __import__(
        "etherpump.commands.%s" % cmd, fromlist=["etherdump.commands"]
    )
    cmdmod.main(args)
except ImportError as e:
    print("Error performing command '{0}'\n(python said: {1})\n".format(cmd, e))
    print(usage)
