diff --git a/printer-linter/printer-linter.py b/printer-linter/printer-linter.py index 7dd18e6176..ba1387c5de 100644 --- a/printer-linter/printer-linter.py +++ b/printer-linter/printer-linter.py @@ -72,7 +72,7 @@ def formatFile(file: Path, settings): config.write(f, space_around_delimiters=settings["format"].get("format-profile-space-around-delimiters", True)) -def main(files, setting_path, to_format, to_fix, report): +def main(files, setting_path, to_format, to_fix, to_diagnose, report): if not setting_path: setting_path = Path(getcwd(), ".printer-linter") @@ -83,29 +83,30 @@ def main(files, setting_path, to_format, to_fix, report): with open(setting_path, "r") as f: settings = yaml.load(f, yaml.FullLoader) - full_body_check = {} - for file in files: - if file.is_dir(): - for fp in file.rglob("**/*"): - full_body_check |= examineFile(fp, settings) - else: - full_body_check |= examineFile(file, settings) - - results = yaml.dump(full_body_check, default_flow_style=False, indent=4, width=240) - if report: - report.write_text(results) - else: - print(results) - - if to_fix: + if to_fix or to_diagnose: + full_body_check = {} for file in files: if file.is_dir(): for fp in file.rglob("**/*"): - if f"{file.as_posix()}" in full_body_check: - fixFile(fp, settings, full_body_check) + full_body_check |= examineFile(fp, settings) else: - if f"{file.as_posix()}" in full_body_check: - fixFile(file, settings, full_body_check) + full_body_check |= examineFile(file, settings) + + results = yaml.dump(full_body_check, default_flow_style=False, indent=4, width=240) + if report: + report.write_text(results) + else: + print(results) + + if to_fix: + for file in files: + if file.is_dir(): + for fp in file.rglob("**/*"): + if f"{file.as_posix()}" in full_body_check: + fixFile(fp, settings, full_body_check) + else: + if f"{file.as_posix()}" in full_body_check: + fixFile(file, settings, full_body_check) if to_format: for file in files: @@ -122,8 +123,9 @@ if __name__ == "__main__": parser.add_argument("--setting", required=False, type=Path, help="Path to the `.printer-linter` setting file") parser.add_argument("--report", required=False, type=Path, help="Path where the diagnostic report should be stored") parser.add_argument("--format", action="store_true", help="Format the files") + parser.add_argument("--diagnose", action="store_true", help="Diagnose the files") parser.add_argument("--fix", action="store_true", help="Attempt to apply the suggested fixes on the files") parser.add_argument("Files", metavar="F", type=Path, nargs="+", help="Files or directories to format") args = parser.parse_args() - main(args.Files, args.setting, args.format, args.fix, args.report) + main(args.Files, args.setting, args.format, args.fix, args.diagnose, args.report)