]> git.scottworley.com Git - pinch/blobdiff - pinch.py
Prefer more type-safe NamedTuple over SimpleNamespace
[pinch] / pinch.py
index d4728fe93d3bc022739df64d844a5439c88642b1..8fe7df16c10958ccaa6c0edfd8c7a834d444faa4 100644 (file)
--- a/pinch.py
+++ b/pinch.py
@@ -34,7 +34,7 @@ from typing import (
 # Use xdg module when it's less painful to have as a dependency
 
 
-class XDG(types.SimpleNamespace):
+class XDG(NamedTuple):
     XDG_CACHE_HOME: str
 
 
@@ -177,7 +177,7 @@ class ChannelSearchPath(TarrableSearchPath):
             release_name=new_gitpin.release_name,
             tarball_url=self.table['nixexprs.tar.xz'].absolute_url,
             tarball_sha256=self.table['nixexprs.tar.xz'].digest,
-            git_revision=self.git_revision)
+            git_revision=new_gitpin.git_revision)
 
     # Lint TODO: Put tarball_url and tarball_sha256 in ChannelSearchPath
     # pylint: disable=no-self-use
@@ -244,8 +244,8 @@ def parse_channel(v: Verification, channel: TarrableSearchPath) -> GitPin:
 
     v.status('Extracting git commit:')
     git_commit_node = d.getElementsByTagName('tt')[0]
-    channel.git_revision = git_commit_node.firstChild.nodeValue
-    v.status(channel.git_revision)
+    git_revision = git_commit_node.firstChild.nodeValue
+    v.status(git_revision)
     v.ok()
     v.status('Verifying git commit label')
     v.result(git_commit_node.previousSibling.nodeValue == 'Git commit ')
@@ -260,7 +260,7 @@ def parse_channel(v: Verification, channel: TarrableSearchPath) -> GitPin:
         channel.table[name] = ChannelTableEntry(
             url=url, digest=digest, size=size)
     v.ok()
-    return GitPin(release_name=title_name, git_revision=channel.git_revision)
+    return GitPin(release_name=title_name, git_revision=git_revision)
 
 
 def digest_string(s: bytes) -> Digest16:
@@ -490,13 +490,14 @@ def extract_tarball(
 def git_checkout(
         v: Verification,
         channel: TarrableSearchPath,
+        pin: GitPin,
         dest: str) -> None:
     v.status('Checking out corresponding git revision')
     git = subprocess.Popen(['git',
                             '-C',
                             git_cachedir(channel.git_repo),
                             'archive',
-                            channel.git_revision],
+                            pin.git_revision],
                            stdout=subprocess.PIPE)
     tar = subprocess.Popen(
         ['tar', 'x', '-C', dest, '-f', '-'], stdin=git.stdout)
@@ -581,7 +582,7 @@ def check_channel_contents(
         extract_tarball(v, channel, channel_contents)
         check_channel_metadata(v, pin, channel_contents)
 
-        git_checkout(v, channel, git_contents)
+        git_checkout(v, channel, pin, git_contents)
 
         compare_tarball_and_git(v, pin, channel_contents, git_contents)