Module snippet.cli
CLI definition.
Expand source code
#
# Copyright (C) 2020 Arm Mbed. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
"""CLI definition."""
import argparse
import os
import sys
import dotenv
from mbed_tools_lib.logging import set_log_level, MbedToolsHandler
from snippet import config
from snippet.api import extract_code_snippets
from snippet._internal.logs import LOGGER
def main() -> int:
"""Script CLI."""
parser = argparse.ArgumentParser()
parser.add_argument("--config", type=str, action="append", help="paths (or globs) to config files")
parser.add_argument(
"dir",
nargs="?",
default=os.getcwd(),
help="path to project root, used by any relative paths in loaded configs [cwd]",
)
parser.add_argument(
"-v",
"--verbose",
action="count",
default=0,
help="Set the verbosity level, enter multiple times to increase verbosity.",
)
parser.add_argument(
"-t", "--traceback", action="store_true", default=True, help="Show a traceback when an error is raised."
)
args = parser.parse_args()
set_log_level(args.verbose)
dotenv.load_dotenv(dotenv.find_dotenv(usecwd=True, raise_error_if_not_found=False))
# Use the context manager to ensure tools exceptions (expected behaviour) are shown as messages to the user,
# but all other exceptions (unexpected behaviour) are shown as errors.
with MbedToolsHandler(LOGGER, args.traceback):
extract_code_snippets(config.get_config(config_paths=args.config, project_root=args.dir,))
return 0
return 1
if __name__ == "__main__":
sys.exit(main())
Functions
def main() -> int
-
Script CLI.
Expand source code
def main() -> int: """Script CLI.""" parser = argparse.ArgumentParser() parser.add_argument("--config", type=str, action="append", help="paths (or globs) to config files") parser.add_argument( "dir", nargs="?", default=os.getcwd(), help="path to project root, used by any relative paths in loaded configs [cwd]", ) parser.add_argument( "-v", "--verbose", action="count", default=0, help="Set the verbosity level, enter multiple times to increase verbosity.", ) parser.add_argument( "-t", "--traceback", action="store_true", default=True, help="Show a traceback when an error is raised." ) args = parser.parse_args() set_log_level(args.verbose) dotenv.load_dotenv(dotenv.find_dotenv(usecwd=True, raise_error_if_not_found=False)) # Use the context manager to ensure tools exceptions (expected behaviour) are shown as messages to the user, # but all other exceptions (unexpected behaviour) are shown as errors. with MbedToolsHandler(LOGGER, args.traceback): extract_code_snippets(config.get_config(config_paths=args.config, project_root=args.dir,)) return 0 return 1