X-Git-Url: http://git.scottworley.com/pinch/blobdiff_plain/17d42dd500b06196b70af99e05e9d0fffaf3f38e..ebf95bd304bb9ef75c559be16a2d1176122db644:/pinch.py diff --git a/pinch.py b/pinch.py index b3f65c6..6ad2cdc 100644 --- a/pinch.py +++ b/pinch.py @@ -1,3 +1,4 @@ +import argparse import configparser import filecmp import functools @@ -7,7 +8,6 @@ import os import os.path import shutil import subprocess -import sys import tempfile import types import urllib.parse @@ -407,22 +407,33 @@ def make_channel(conf: configparser.SectionProxy) -> Channel: return channel -def main(argv: List[str]) -> None: +def pin(args: argparse.Namespace) -> None: v = Verification() config = configparser.ConfigParser() - config.read_file(open(argv[1]), argv[1]) + config.read_file(open(args.channels_file), args.channels_file) for section in config.sections(): channel = make_channel(config[section]) if 'channel_url' in config[section]: pin_channel(v, channel) + config[section]['name'] = channel.release_name config[section]['tarball_url'] = channel.table['nixexprs.tar.xz'].absolute_url config[section]['tarball_sha256'] = channel.table['nixexprs.tar.xz'].digest else: git_fetch(v, channel) config[section]['git_revision'] = channel.git_revision - with open(argv[1], 'w') as configfile: + with open(args.channels_file, 'w') as configfile: config.write(configfile) -main(sys.argv) +def main() -> None: + parser = argparse.ArgumentParser(prog='pinch') + subparsers = parser.add_subparsers(dest='mode', required=True) + parser_pin = subparsers.add_parser('pin') + parser_pin.add_argument('channels_file', type=str) + parser_pin.set_defaults(func=pin) + args = parser.parse_args() + args.func(args) + + +main()