dazl

Source code for dazl.cli

# Copyright (c) 2019 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

"""
Simple command-line handlers.
"""

import logging
import sys
from typing import List, Sequence

from .. import setup_default_logger
from ..model.core import ConfigurationError
from ._base import CliCommand
from .fetch import FetchComponentCommand
from .ls import ListAllCommand
from .metadata import PrintMetadataCommand
from .package import PackageDarCommand
from .sandbox import SandboxCommand
from .tail import TailCommand
from .upload import UploadCommand
from .version import VersionCommand

COMMANDS = [
    FetchComponentCommand(),
    ListAllCommand(),
    PrintMetadataCommand(),
    PackageDarCommand(),
    SandboxCommand(),
    TailCommand(),
    UploadCommand(),
    VersionCommand(),
]  # type: List[CliCommand]


[docs]def main(): """ Executes one of the known commands. """ from sys import argv, exit exit(_main(argv))
def _main(argv: 'Sequence[str]') -> int: if len(argv) > 1: command = argv[1] command_args = argv[2:] for cmd in COMMANDS: if cmd.name == command: try: return run(cmd, command_args) except ConfigurationError as error: for reason in error.reasons: print(reason) return -1 print("Unknown command: " + command) print_cmd_help() return -2
[docs]def run(cmd, args) -> int: parser = cmd.parser() parsed_args = parser.parse_args(args) log_level = getattr(parsed_args, 'log_level', logging.WARNING) if log_level is None: log_level = logging.WARNING setup_default_logger(level=log_level) return cmd.execute(parsed_args)