#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import os
import importlib.util
import argparse

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()

importlib.machinery.SOURCE_SUFFIXES.append('')

bin_folder = os.path.dirname(__file__)
scriptnames = [
    filename.split('-', maxsplit = 1)[1]
    for filename in os.listdir(bin_folder)
    if os.path.isfile(os.path.join(bin_folder, filename)) and filename.startswith('hateno-')
]

for scriptname in scriptnames:
    subparser = subparsers.add_parser(scriptname)

    module_name = f'hateno{scriptname.replace("-", "")}'
    spec = importlib.util.spec_from_file_location(module_name, os.path.join(bin_folder, f'hateno-{scriptname}'))
    module = importlib.util.module_from_spec(spec)
    sys.modules[module_name] = module
    spec.loader.exec_module(module)

    module.addArguments(subparser)
    subparser.set_defaults(func = module.action)

args = parser.parse_args()
try:
    args.func(args)

except AttributeError:
    parser.print_help()
