diff --git a/scripts/make_generated_files.py b/scripts/make_generated_files.py index 73570fb28..d919fb0cf 100755 --- a/scripts/make_generated_files.py +++ b/scripts/make_generated_files.py @@ -27,7 +27,7 @@ class GenerationScript: def __init__(self, script: Path, files: List[Path], output_dir_option: Optional[str] = None, output_file_option: Optional[str] = None, - optional: bool = False): + optional: bool = False) -> None: # Path from the root of Mbed TLS or TF-PSA-Crypto of the generation script self.script = script @@ -55,7 +55,7 @@ def __init__(self, script: Path, files: List[Path], # consuming repository hasn't been updated yet. self.optional = optional -def get_generation_script_files(generation_script: str): +def get_generation_script_files(generation_script: str) -> List[Path]: """ Get the list of the default paths of the files that a given script generates. It is assumed that the script supports the "--list" option. @@ -182,7 +182,7 @@ def get_generation_script_files(generation_script: str): get_generation_script_files("scripts/generate_visualc_files.pl"), "--directory", None)) -def get_generated_files(generation_scripts: List[GenerationScript]): +def get_generated_files(generation_scripts: List[GenerationScript]) -> List[Path]: """ List the generated files in Mbed TLS or TF-PSA-Crypto. The path from root is returned for each generated files. @@ -193,7 +193,7 @@ def get_generated_files(generation_scripts: List[GenerationScript]): return files -def make_generated_files(generation_scripts: List[GenerationScript]): +def make_generated_files(generation_scripts: List[GenerationScript]) -> None: """ Generate the configuration independent files in their default location in the Mbed TLS or TF-PSA-Crypto tree. @@ -201,11 +201,13 @@ def make_generated_files(generation_scripts: List[GenerationScript]): for generation_script in generation_scripts: subprocess.run([generation_script.exe, str(generation_script.script)], check=True) -def check_generated_files(generation_scripts: List[GenerationScript], root: Path): +def check_generated_files(generation_scripts: List[GenerationScript], + root: Path) -> bool: """ Check that the given root directory contains the generated files as expected/ generated by this script. """ + ok = True for generation_script in generation_scripts: for file in generation_script.files: file = root / file @@ -240,6 +242,7 @@ def check_generated_files(generation_scripts: List[GenerationScript], root: Path # there's nothing to compare to, or clean up. continue if not filecmp.cmp(file, bak_file): + ok = False ref_file = file.with_name(file.name + ".ref") ref_file = root / ref_file if ref_file.exists(): @@ -248,8 +251,9 @@ def check_generated_files(generation_scripts: List[GenerationScript], root: Path print(f"Generated file {file} not identical to the reference one {ref_file}.") file.unlink() bak_file.rename(file) + return ok -def main(): +def main() -> int: """ Main function of this program """ @@ -280,10 +284,13 @@ def main(): files = get_generated_files(generation_scripts) for file in files: print(str(file)) + return 0 elif args.check: - check_generated_files(generation_scripts, Path(args.root or ".")) + ok = check_generated_files(generation_scripts, Path(args.root or ".")) + return 0 if ok else 1 else: make_generated_files(generation_scripts) + return 0 # Any error causes an exception if __name__ == "__main__": sys.exit(main())