Source code for statick_tool.args

"""Custom argument handling.

Enable usage of user-paths argument before parsing other arguments.
"""

import argparse
import logging
import os
from typing import Any, List, Optional


[docs]class Args: """Custom argument handling. Enable usage of user-paths argument before parsing other arguments. """ def __init__(self, name: str) -> None: """Initialize arguments.""" self.pre_parser = argparse.ArgumentParser(description=name, add_help=False) user_path_args = { "dest": "user_paths", "type": str, "help": "Comma separated list of paths containing " "configuration or plugins", } self.pre_parser.add_argument("--user-paths", "-u", **user_path_args) # type: ignore self.parser = argparse.ArgumentParser(description=name) self.parser.add_argument("--user-paths", "-u", **user_path_args) # type: ignore
[docs] def get_user_paths(self, args: Any = None) -> List[str]: """Get a list of user paths containing config or plugins.""" user_paths: List[str] = [] args = self.pre_parser.parse_known_args(args)[0] if args.user_paths is not None: paths: List[str] = args.user_paths.split(",") for path in paths: if os.path.exists(path) and os.path.isdir(path): user_paths.append(path) else: logging.error("Could not find user path %s!", path) return user_paths
[docs] def get_args(self, args: Optional[List[str]] = None) -> argparse.Namespace: """Get parsed command-line arguments.""" return self.parser.parse_args(args)