#!/usr/bin/python3
import logging

import mini_buildd.config
import mini_buildd.cli
import mini_buildd.files
import mini_buildd.sbuild

LOG = logging.getLogger("mini_buildd")

#: Needed for man page hack in setup.py
DESCRIPTION = "Utility toolbox (makes miscellaneous internals available for manual use)"


class CLI(mini_buildd.cli.CLI):
    def __init__(self):
        super().__init__("mini-buildd-internals", DESCRIPTION)
        self.subparsers = self.parser.add_subparsers(title="Utility (run 'mini-buildd-internals <utility> --help' for full single command help)",
                                                     required=True,
                                                     metavar="<utility> [options]")
        sbuild_setup_blocks_parser = self._add_subparser(self.subparsers, "sbuild-setup-blocks", "Print or run sbuild setup blocks")
        sbuild_setup_blocks_parser.add_argument("name", choices=mini_buildd.sbuild.SETUP_BLOCKS.keys(), nargs="?", help="Sbuild block name")
        sbuild_setup_blocks_parser.add_argument("--cat", "-C", action="store_true", help="Print script to stdout.")
        sbuild_setup_blocks_parser.add_argument("--run", "-R", action="store_true", help="Actually run this block (in your current environment).")
        sbuild_setup_blocks_parser.set_defaults(command=self.run_sbuild_setup_blocks)

    def _run_script(self, script):
        if self.args.cat:
            print(script.get())
        elif self.args.run:
            script.run(cli=True)
        else:
            print(script)

    def run_sbuild_setup_blocks(self):
        if self.args.name is None:
            print(mini_buildd.sbuild.SETUP_BLOCKS.usage())
        else:
            self._run_script(mini_buildd.sbuild.SETUP_BLOCKS[self.args.name])

    def runcli(self):
        self.args.command()


CLI().run()
