From c30c55578289e2ef028ce89fbe1f455df79664c2 Mon Sep 17 00:00:00 2001 From: Max Erenberg <> Date: Wed, 5 Jan 2022 20:16:35 -0500 Subject: [PATCH] only use one file for config and data --- data.json | 12 ++++++--- main.py | 81 ++++++++++++++++++++++++++----------------------------- 2 files changed, 46 insertions(+), 47 deletions(-) diff --git a/data.json b/data.json index 27b7fac..b09e445 100644 --- a/data.json +++ b/data.json @@ -98,7 +98,8 @@ "out_of_sync_interval": 86400, "csc": "", "upstream": "https://deb.debian.org/", - "file": "debian-ports/project/trace/porta.debian.org" + "file": "debian-ports/project/trace/porta.debian.org", + "exclude": true }, "DebianSecurity": { "out_of_sync_since": null, @@ -265,7 +266,8 @@ "out_of_sync_interval": 86400, "csc": "", "upstream": "https://ftp.openbsd.org/pub/", - "file": "OpenBSD/timestamp" + "file": "OpenBSD/timestamp", + "exclude": true }, "opensuse": { "out_of_sync_since": null, @@ -286,7 +288,8 @@ "out_of_sync_interval": 86400, "csc": "pkgsrc/", "upstream": "http://ftp.netbsd.org/pub/pkgsrc/", - "file": "MIRROR-TIMESTAMP" + "file": "MIRROR-TIMESTAMP", + "exclude": true }, "puppy_linux": { "out_of_sync_since": null, @@ -300,7 +303,8 @@ "out_of_sync_interval": 86400, "csc": "qtproject/", "upstream": "https://download.qt.io/", - "file": "timestamp.txt" + "file": "timestamp.txt", + "exclude": true }, "racket": { "out_of_sync_since": null, diff --git a/main.py b/main.py index 8df0c81..c1161cc 100644 --- a/main.py +++ b/main.py @@ -14,51 +14,46 @@ import json if __name__ == "__main__": - exit_code = 0 + exit_code = 0 - with open("data.json", "r", encoding="utf-8") as file: - data = json.load(file) - if sys.stdin.isatty(): - projects = data - else: - projects = [project.rstrip() for project in sys.stdin.readlines()] - current_time = int(time.time()) - for project in projects: - try: - if project not in data: - print(f"Failure: {project} does not exist") - continue - project_class = getattr(sys.modules[__name__], project) + data_file = 'data.json' + if len(sys.argv) > 1: + data_file = sys.argv[1] + data = json.load(open(data_file)) - # Skip projects we no longer mirror - if project in ["pkgsrc", "qtproject", "DebianPorts", "OpenBSD"]: - continue - if project in ["CPAN", "ubuntu", "ubuntu_releases", "manjaro", "mxlinux", "cran", "ctan", "gentooportage"]: - checker_result = project_class.check(data, project, current_time) - if checker_result: - print(f"Success: {project} up-to-date") - else: - print(f"Failure: {project} out-of-sync") + current_time = int(time.time()) + for project in data: + try: + project_class = getattr(sys.modules[__name__], project) - # Exit with non-zero status if any of the projects are not up-to-date - exit_code = 1 - continue - checker_result = project_class.check(data, project, current_time) - if checker_result: - data[project]["out_of_sync_since"] = None - elif data[project]["out_of_sync_since"] is None: - data[project]["out_of_sync_since"] = current_time - elif current_time - data[project]["out_of_sync_since"] \ - > data[project]["out_of_sync_interval"]: - print(f"Failure: {project} out-of-sync") + # Skip projects we no longer mirror + if data[project].get('exclude', False): + continue + checker_result = project_class.check(data, project, current_time) + if project in ["CPAN", "ubuntu", "ubuntu_releases", "manjaro", "mxlinux", "cran", "ctan", "gentooportage"]: + if checker_result: + print(f"Success: {project} up-to-date") + else: + print(f"Failure: {project} out-of-sync") - # Exit with non-zero status if any of the projects are not up-to-date - exit_code = 1 - continue - print(f"Success: {project} up-to-date") - except requests.exceptions.RequestException as err: - print(f"Error: {project}\n{err}") - with open("data.json", "w", encoding="utf-8") as file: - json.dump(data, file, indent='\t') + # Exit with non-zero status if any of the projects are not up-to-date + exit_code = 1 + continue + if checker_result: + data[project]["out_of_sync_since"] = None + elif data[project]["out_of_sync_since"] is None: + data[project]["out_of_sync_since"] = current_time + elif current_time - data[project]["out_of_sync_since"] \ + > data[project]["out_of_sync_interval"]: + print(f"Failure: {project} out-of-sync") - sys.exit(exit_code) + # Exit with non-zero status if any of the projects are not up-to-date + exit_code = 1 + continue + print(f"Success: {project} up-to-date") + except requests.exceptions.RequestException as err: + print(f"Error: {project}\n{err}") + with open(data_file, "w", encoding="utf-8") as file: + json.dump(data, file, indent='\t') + + sys.exit(exit_code)