From 87d64e214b220266d2ebf6a60b0cc1ceb75e687d Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Wed, 17 Jul 2024 19:04:01 +0200 Subject: [PATCH] Changed output of custom linter --- Scripts/custom_linter.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Scripts/custom_linter.py b/Scripts/custom_linter.py index ca90d96..827aa38 100644 --- a/Scripts/custom_linter.py +++ b/Scripts/custom_linter.py @@ -2,8 +2,8 @@ import os from lxml import etree NAMESPACE = {'kgpz': 'https://www.koenigsberger-zeitungen.de'} -SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -XML_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, '..', 'XML')) +REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) +XML_DIR = os.path.join(REPO_ROOT, 'XML') def parse_xml_file(filepath): try: @@ -17,15 +17,16 @@ def parse_xml_file(filepath): def get_all_ids(root, tag): return set(elem.get('id') for elem in root.xpath(f'.//kgpz:{tag}', namespaces=NAMESPACE)) -def check_references(beitrag_root, reference_data, filename): +def check_references(beitrag_root, reference_data, filepath): errors = [] + relative_path = os.path.relpath(filepath, REPO_ROOT) for ref_type, ref_tag in [('akteur', 'akteur'), ('kategorie', 'kategorie'), ('ort', 'ort'), ('werk', 'werk')]: for ref in beitrag_root.xpath(f'//kgpz:{ref_tag}', namespaces=NAMESPACE): ref_id = ref.get('ref') if ref_id not in reference_data[ref_type]: line_number = ref.sourceline - errors.append((filename, line_number, f"INVALID REFERENCE ({ref_type}:{ref_id})")) + errors.append((relative_path, line_number, f"INVALID REFERENCE ({ref_type}:{ref_id})")) return errors def main(): @@ -41,20 +42,21 @@ def main(): beitraege_dir = os.path.join(XML_DIR, 'beitraege') for filename in os.listdir(beitraege_dir): if filename.endswith('-beitraege.xml'): - beitrag_root = parse_xml_file(os.path.join(beitraege_dir, filename)) + filepath = os.path.join(beitraege_dir, filename) + beitrag_root = parse_xml_file(filepath) if beitrag_root is not None: - errors = check_references(beitrag_root, reference_data, filename) + errors = check_references(beitrag_root, reference_data, filepath) all_errors.extend(errors) all_errors.sort(key=lambda x: (x[0], x[1])) with open('linter_results.txt', 'w') as f: - for filename, line_number, error_message in all_errors: - f.write(f"{filename}:{line_number}:{error_message}\n") + for filepath, line_number, error_message in all_errors: + f.write(f"{filepath}:{line_number}:{error_message}\n") if all_errors: - for filename, line_number, error_message in all_errors: - print(f"{filename}, Line {line_number}: {error_message}") + for filepath, line_number, error_message in all_errors: + print(f"{filepath}, Line {line_number}: {error_message}") exit(1) # Exit with error code if there are any errors else: print("No errors found.")