forked from public/mirror-checker
only use one file for config and data
This commit is contained in:
parent
771d95814f
commit
c30c555782
12
data.json
12
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,
|
||||
|
|
81
main.py
81
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)
|
||||
|
|
Loading…
Reference in New Issue