diff options
Diffstat (limited to 'scripts/check-unpetrify-refs.py')
-rwxr-xr-x | scripts/check-unpetrify-refs.py | 53 |
1 files changed, 17 insertions, 36 deletions
diff --git a/scripts/check-unpetrify-refs.py b/scripts/check-unpetrify-refs.py index 27792c4a..c70b680d 100755 --- a/scripts/check-unpetrify-refs.py +++ b/scripts/check-unpetrify-refs.py @@ -15,11 +15,12 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import os -import sys import glob -import yaml +import argparse import subprocess +import scriptslib + ''' Script for checking unpetrify-refs in strata. @@ -31,14 +32,6 @@ a missing or non-existent unpetrify-ref and if it fails to check the remote ''' strata_dir = "strata" -trove_host = "git.baserock.org" -aliases = { - 'baserock:': 'git://%(trove)s/baserock/', - 'freedesktop:': 'git://anongit.freedesktop.org/', - 'github:': 'git://github.com/', - 'gnome:': 'git://git.gnome.org/', - 'upstream:': 'git://%(trove)s/delta/' -} def ref_exists(remote, ref): output = subprocess.check_output( @@ -46,43 +39,31 @@ def ref_exists(remote, ref): stderr=subprocess.STDOUT).strip() return True if output else False -def get_repo_url(repo): - remote = repo[:repo.find(':') + 1] - return repo.replace(remote, aliases[remote]) - -def definitions_root(): - return subprocess.check_output( - ["git", "rev-parse", "--show-toplevel"]).strip() - -def load_yaml_file(yaml_file): - with open(yaml_file, 'r') as f: - return yaml.safe_load(f) - -def main(args): - global trove_host, aliases - opt = next(((i, j.split('=')[1]) for i, j in enumerate(args) - if j.startswith("--trove-host=")), None) - if opt: - trove_host = opt[1] - del args[opt[0]] - aliases = {k: v % {'trove': trove_host} for k, v in aliases.iteritems()} +def main(): + parser = argparse.ArgumentParser( + description="Sanity checks unpetrify-refs in Baserock strata") + parser.add_argument("--trove-host", default="git.baserock.org", + help="Trove host to map repo aliases to") + parser.add_argument("strata", nargs="*", metavar="STRATA", + help="The strata to check (checks all by default)") + args = parser.parse_args() - if args: - strata = args + if args.strata: + strata = args.strata else: - strata_path = os.path.join(definitions_root(), strata_dir) + strata_path = os.path.join(scriptslib.definitions_root(), strata_dir) strata = glob.glob("%s/*.morph" % strata_path) for stratum in strata: path = os.path.relpath(stratum) - morphology = load_yaml_file(stratum) + morphology = scriptslib.load_yaml_file(stratum) for chunk in morphology['chunks']: unpetrify_ref = chunk.get("unpetrify-ref") if not unpetrify_ref: print ("%s: '%s' has no unpetrify-ref!" % (path, chunk['name'])) continue - remote = get_repo_url(chunk['repo']) + remote = scriptslib.parse_repo_alias(chunk['repo'], args.trove_host) try: if not ref_exists(remote, unpetrify_ref): print ("%s: unpetrify-ref for '%s' is not present on the " @@ -92,4 +73,4 @@ def main(args): (path, remote, chunk['name'], e.output.strip())) if __name__ == "__main__": - main(sys.argv[1:]) + main() |