Source code for e3_build_tools.cli.make_lint

"""Entry-point to linting the makefile on the e3 modules."""

import argparse
import logging
import sys
from pathlib import Path

from e3_build_tools.fs.make import find_cxx_stds, find_undefined_vars
from e3_build_tools.logging import set_up_logger
from e3_build_tools.utils import WrapperType, get_wrapper_type

[docs] logger = logging.getLogger(__name__)
[docs] def lint_makefile(wrapper: Path, debug: bool) -> None: """Lint e3 makefiles. Raises: TypeError: if wrapper is not a valid e3 wrapper. """ set_up_logger(debug) if get_wrapper_type(wrapper) == WrapperType.BASE: logger.error("Please don't try to lint EPICS base.") sys.exit(-1) issue_detected = False undefined = find_undefined_vars(wrapper) if undefined: logger.error(f"You have undefined vars: {undefined}") issue_detected = True stds = find_cxx_stds(wrapper) if stds: logger.error(f"Don't define std on a module level - you have defined {stds}") issue_detected = True if issue_detected: sys.exit(-1) logger.info("No issues detected.")
[docs] def main(): """Run the main function.""" parser = argparse.ArgumentParser() parser.add_argument( "wrapper", nargs="?", type=Path, default=Path.cwd(), help="Path to wrapper repository", ) parser.add_argument("-d", "--debug", action="store_true", help=argparse.SUPPRESS) args = parser.parse_args() lint_makefile(**vars(args))