Check whether our mirror packages are up to date.
Go to file
Raymond Li 0d28efaebb
Exit with non-zero status if any of the projects are not up-to-date
2021-12-28 21:34:10 -05:00
projects Fix not working on Python 3.10 2021-12-28 21:28:35 -05:00
.gitignore Rename distro to project 2021-10-03 15:44:08 -04:00
README.md adjusted requirements.txt 2021-10-17 21:23:31 -07:00
data.json Add Artix 2021-12-28 21:28:23 -05:00
example.in Add Artix 2021-12-28 21:28:23 -05:00
main.py Exit with non-zero status if any of the projects are not up-to-date 2021-12-28 21:34:10 -05:00
project.py Improvements 2021-11-14 20:44:42 -05:00
requirements.txt adjusted requirements.txt 2021-10-17 21:23:31 -07:00
shared.py Changed GNOME to automatically check for latest version and refactored code into classes 2021-09-04 12:03:18 -04:00
test.py changed linuxmint, ubuntu_ports_releases, xubuntu_releases 2021-10-17 22:23:55 -07:00

README.md

Mirror Checker

This mirror status checker determines whether CSC mirror is up-to-date with upstream.

How To Run

A configuration file may be provided through standard input. Without a configuration file, execute python main.py. By default, all the available distributions will be checked. With a configuration file, execute python main.py < name_of_config_file.in, for example, python main.py < example.in. In this case, only the distributions listed in the configuration file will be checked.

Dev Notes

How the program works: We first have a general mirror check class called project.py which checks whether the timestamp in the directory of the mirror is in-sync with the upstream. Then, for each CSC mirror, a class is built which inherits from the general project.py class but often overrides the original check function with a check function specific to the mirror. A few big themes are: some check a mirror status tracker provided by the project mirrored; some check all the Release files for each version in a distro etc. website information which all the mirror checker classes need is stored in the data.json file.

Future notes: Because many of the mirror checkers are built very specific to each mirror. A slight change in the way the project manages their mirror-related websites, public repos etc. can drastically influence whether the mirror checker works correctly or not. These problems are also unfortunately very hard to detect, so it's important that CSC actively maintain the mirror checker so that it works as intended in the long term.

Extra notes: A test client for individual mirror checker classes is provided as test.py. To use it, simply change all occurrences of the imported project class

Resources

if we can just view their repo online, we only have to remember the link for their repo and then check the latest timestamp in their repo the same way we check ours

even if the date relies on a specific file in their repo, we can still find the right link for it

to find repos of the mirrored projects to check, just search "projectName mirrors"

Checker Information