X-Git-Url: http://git.scottworley.com/pinch/blobdiff_plain/925c801b763927b3fd3f9071fa017c638d656fe4..f15e458d6371d1074d0d91cf7cf9a5312a467b80:/pinch.py diff --git a/pinch.py b/pinch.py index 1a97f53..1dbd667 100644 --- a/pinch.py +++ b/pinch.py @@ -1,3 +1,4 @@ +import configparser import filecmp import functools import hashlib @@ -6,6 +7,7 @@ import os import os.path import shutil import subprocess +import sys import tempfile import types import urllib.parse @@ -318,11 +320,37 @@ def git_checkout(v: Verification, channel: Channel, dest: str) -> None: v.result(git.returncode == 0 and tar.returncode == 0) +def check_channel_metadata( + v: Verification, + channel: Channel, + channel_contents: str) -> None: + v.status('Verifying git commit in channel tarball') + v.result( + open( + os.path.join( + channel_contents, + channel.release_name, + '.git-revision')).read(999) == channel.git_commit) + + v.status( + 'Verifying version-suffix is a suffix of release name %s:' % + channel.release_name) + version_suffix = open( + os.path.join( + channel_contents, + channel.release_name, + '.version-suffix')).read(999) + v.status(version_suffix) + v.result(channel.release_name.endswith(version_suffix)) + + def check_channel_contents(v: Verification, channel: Channel) -> None: with tempfile.TemporaryDirectory() as channel_contents, \ tempfile.TemporaryDirectory() as git_contents: extract_tarball(v, channel, channel_contents) + check_channel_metadata(v, channel, channel_contents) + git_checkout(v, channel, git_contents) compare_tarball_and_git(v, channel, channel_contents, git_contents) @@ -331,11 +359,11 @@ def check_channel_contents(v: Verification, channel: Channel) -> None: v.ok() -def main() -> None: +def main(argv: List[str]) -> None: v = Verification() - channel = Channel(url='https://channels.nixos.org/nixos-20.03', - git_repo='https://github.com/NixOS/nixpkgs.git', - git_ref='nixos-20.03') + config = configparser.ConfigParser() + config.read_file(open(argv[1]), argv[1]) + channel = Channel(**dict(config['nixos'].items())) fetch(v, channel) parse_channel(v, channel) fetch_resources(v, channel) @@ -344,4 +372,4 @@ def main() -> None: print(channel) -main() +main(sys.argv)