#!/usr/bin/python3
# coding=utf-8

import argparse
import os
import sys

from bcscripts3dp import (bcauth, bcconf, bcethtool, bcfirmware, bciocontrol,
                          bclivetrace, bcpeers, bctask, bcwlanshow)
from bcscripts3dp.bcconf_legacy import bcget, bcset, bcsummary


# pylint: disable=protected-access
class _MainHelpAction(argparse._HelpAction):
    def __call__(self, parser, _namespace, _values, _option_string=None):
        parser.print_help()
        # retrieve subparsers from parser
        # [
        #     action for action in parser._actions
        #     if isinstance(action, argparse._SubParsersAction)
        # ]
        parser.exit()


if __name__ == "__main__":
    root_parser = argparse.ArgumentParser(add_help=False)
    root_parser.add_argument(
        "-h",
        "--help",
        action=_MainHelpAction,
        help=f"{os.path.basename(sys.argv[0])} <action> [action options] or <action> --help",
    )
    subparser = root_parser.add_subparsers(title="ACTIONS", help="Supported actions")

    bcsummary.options(subparser)
    bcget.options(subparser)
    bcset.options(subparser)
    bcconf.options(subparser)
    bctask.options(subparser)
    bciocontrol.options(subparser)
    bcpeers.options(subparser)
    bcauth.options(subparser)
    bclivetrace.options(subparser)
    bcfirmware.options(subparser)
    bcwlanshow.options(subparser)
    bcethtool.options(subparser)

    args = root_parser.parse_args()
    if "bcconfig" in sys.argv[0]:
        # Run as bcconfig; this is a legacy mode that uses the first
        # discovered local breadcrumb as the target
        # see ./bcscripts3dp/bcconf_legacy/__init__.py
        from bcscripts3dp.bcconf_legacy import breadcrumb_target

        if ("target" in args) and args.target is None:
            target = breadcrumb_target.target_select(False)
            setattr(args, "target", target)

    rc = args.func(args)
    sys.exit(rc)
