]> git.scottworley.com Git - pinch/blobdiff - pinch.py
shell.nix
[pinch] / pinch.py
index b044faf34c0304dbdd20b55c84c9d27bd1b3832a..ad493344a65d7d07e05c92b882f49dc8f01f7a0a 100644 (file)
--- a/pinch.py
+++ b/pinch.py
@@ -496,7 +496,7 @@ def pin(args: argparse.Namespace) -> None:
 def update(args: argparse.Namespace) -> None:
     v = Verification()
     config = configparser.ConfigParser()
-    exprs = {}
+    exprs: Dict[str, str] = {}
     configs = [read_config(filename) for filename in args.channels_file]
     for config in configs:
         for section in config.sections():
@@ -514,6 +514,8 @@ def update(args: argparse.Namespace) -> None:
                 ensure_git_rev_available(v, channel)
                 tarball = git_get_tarball(v, channel)
 
+            if section in exprs:
+                raise Exception('Duplicate channel "%s"' % section)
             exprs[section] = (
                 'f: f { name = "%s"; channelName = "%%s"; src = builtins.storePath "%s"; }' %
                 (config[section]['release_name'], tarball))
@@ -521,6 +523,8 @@ def update(args: argparse.Namespace) -> None:
     for config in configs:
         for section in config.sections():
             if 'alias_of' in config[section]:
+                if section in exprs:
+                    raise Exception('Duplicate channel "%s"' % section)
                 exprs[section] = exprs[str(config[section]['alias_of'])]
 
     command = [