def main()

in onedocker/script/cli/onedocker_cli.py [0:0]


def main() -> None:
    global container_svc, onedocker_svc, onedocker_package_repo, log_svc, logger, task_definition, repository_path
    s = schema.Schema(
        {
            "upload": bool,
            "test": bool,
            "show": bool,
            "stop": bool,
            "--config": schema.And(schema.Use(PurePath), os.path.exists),
            "--package_name": schema.Or(None, schema.And(str, len)),
            "--package_dir": schema.Or(None, schema.And(str, len)),
            "--cmd_args": schema.Or(None, schema.And(str, len)),
            "--container": schema.Or(None, schema.And(str, len)),
            "--log_path": schema.Or(None, schema.Use(Path)),
            "--verbose": bool,
            "--help": bool,
            "--version": schema.Or(None, schema.And(str, len)),
            "--timeout": schema.Or(None, schema.Use(int)),
        }
    )

    arguments = s.validate(docopt(__doc__))
    logger = logging.getLogger(__name__)
    log_path = arguments["--log_path"]
    log_level = logging.DEBUG if arguments["--verbose"] else logging.INFO
    logging.basicConfig(filename=log_path, level=log_level)

    package_name = arguments["--package_name"]
    package_dir = arguments["--package_dir"]
    version = (
        arguments["--version"] if arguments["--version"] else DEFAULT_BINARY_VERSION
    )

    config = yaml.load(Path(arguments["--config"])).get("onedocker-cli")
    task_definition = config["setting"]["task_definition"]
    repository_path = config["setting"]["repository_path"]

    storage_svc = _build_storage_service(config["dependency"]["StorageService"])
    container_svc = _build_container_service(config["dependency"]["ContainerService"])
    onedocker_svc = OneDockerService(container_svc, task_definition)
    onedocker_package_repo = OneDockerPackageRepository(storage_svc, repository_path)
    log_svc = _build_log_service(config["dependency"]["LogService"])
    if arguments["upload"]:
        _upload(package_dir, package_name, version)
    elif arguments["test"]:
        timeout = arguments["--timeout"] if arguments["--timeout"] else DEFAULT_TIMEOUT
        _test(package_name, version, arguments["--cmd_args"], timeout)
    elif arguments["show"]:
        _show(package_name, arguments["--version"])
    elif arguments["stop"]:
        _stop(arguments["--container"])