#!/usr/bin/env python3 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)