"""Entry-point to linting the makefile on the e3 modules."""importargparseimportloggingimportsysfrompathlibimportPathfrome3_build_tools.fs.makeimportfind_cxx_stds,find_undefined_varsfrome3_build_tools.loggingimportset_up_loggerfrome3_build_tools.utilsimportWrapperType,get_wrapper_type
[docs]deflint_makefile(wrapper:Path,debug:bool)->None:"""Lint e3 makefiles. Raises: TypeError: if wrapper is not a valid e3 wrapper. """set_up_logger(debug)ifget_wrapper_type(wrapper)==WrapperType.BASE:logger.error("Please don't try to lint EPICS base.")sys.exit(-1)issue_detected=Falseundefined=find_undefined_vars(wrapper)ifundefined:logger.error(f"You have undefined vars: {undefined}")issue_detected=Truestds=find_cxx_stds(wrapper)ifstds:logger.error(f"Don't define std on a module level - you have defined {stds}")issue_detected=Trueifissue_detected:sys.exit(-1)logger.info("No issues detected.")
[docs]defmain():"""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))