]> git.scottworley.com Git - pinch/commitdiff
git_cachedir without Channel
authorScott Worley <scottworley@scottworley.com>
Fri, 10 Apr 2020 20:38:23 +0000 (13:38 -0700)
committerScott Worley <scottworley@scottworley.com>
Fri, 10 Apr 2020 20:38:23 +0000 (13:38 -0700)
pinch.py

index ae2c7ec14a3e983015e2f3ddb57df6bfb4df899a..3e725e171557e1bd4c484a130dc89422e2277083 100644 (file)
--- a/pinch.py
+++ b/pinch.py
@@ -38,7 +38,6 @@ class Channel(types.SimpleNamespace):
     channel_html: bytes
     channel_url: str
     forwarded_url: str
-    git_cachedir: str
     git_ref: str
     git_repo: str
     git_revision: str
@@ -211,6 +210,10 @@ def fetch_resources(v: Verification, channel: Channel) -> None:
         open(
             channel.table['git-revision'].file).read(999) == channel.git_revision)
 
+def git_cachedir(git_repo: str) -> str:
+    # TODO: Consider using pyxdg to find this path.
+    return os.path.expanduser('~/.cache/nix-pin-channel/git/%s' % digest_string(git_repo.encode()))
+
 
 def git_fetch(v: Verification, channel: Channel) -> None:
     # It would be nice if we could share the nix git cache, but as of the time
@@ -219,22 +222,18 @@ def git_fetch(v: Verification, channel: Channel) -> None:
     # details for my comfort.  So we re-implement here half of nix.fetchGit.
     # :(
 
-    # TODO: Consider using pyxdg to find this path.
-    channel.git_cachedir = os.path.expanduser(
-        '~/.cache/nix-pin-channel/git/%s' %
-        digest_string(
-            channel.git_repo.encode()))
-    if not os.path.exists(channel.git_cachedir):
+    cachedir = git_cachedir(channel.git_repo)
+    if not os.path.exists(cachedir):
         v.status("Initializing git repo")
         process = subprocess.run(
-            ['git', 'init', '--bare', channel.git_cachedir])
+            ['git', 'init', '--bare', cachedir])
         v.result(process.returncode == 0)
 
     have_rev = False
     if hasattr(channel, 'git_revision'):
         v.status('Checking if we already have this rev:')
         process = subprocess.run(
-            ['git', '-C', channel.git_cachedir, 'cat-file', '-e', channel.git_revision])
+            ['git', '-C', cachedir, 'cat-file', '-e', channel.git_revision])
         if process.returncode == 0:
             v.status('yes')
         if process.returncode == 1:
@@ -250,7 +249,7 @@ def git_fetch(v: Verification, channel: Channel) -> None:
         # updates are happening.
         process = subprocess.run(['git',
                                   '-C',
-                                  channel.git_cachedir,
+                                  cachedir,
                                   'fetch',
                                   channel.git_repo,
                                   '%s:%s' % (channel.git_ref,
@@ -259,13 +258,13 @@ def git_fetch(v: Verification, channel: Channel) -> None:
         if hasattr(channel, 'git_revision'):
             v.status('Verifying that fetch retrieved this rev')
             process = subprocess.run(
-                ['git', '-C', channel.git_cachedir, 'cat-file', '-e', channel.git_revision])
+                ['git', '-C', cachedir, 'cat-file', '-e', channel.git_revision])
             v.result(process.returncode == 0)
 
     if not hasattr(channel, 'git_revision'):
         channel.git_revision = open(
             os.path.join(
-                channel.git_cachedir,
+                cachedir,
                 'refs',
                 'heads',
                 channel.git_ref)).read(999).strip()
@@ -273,7 +272,7 @@ def git_fetch(v: Verification, channel: Channel) -> None:
     v.status('Verifying rev is an ancestor of ref')
     process = subprocess.run(['git',
                               '-C',
-                              channel.git_cachedir,
+                              cachedir,
                               'merge-base',
                               '--is-ancestor',
                               channel.git_revision,
@@ -286,7 +285,7 @@ def git_fetch(v: Verification, channel: Channel) -> None:
             channel.old_git_revision)
         process = subprocess.run(['git',
                                   '-C',
-                                  channel.git_cachedir,
+                                  cachedir,
                                   'merge-base',
                                   '--is-ancestor',
                                   channel.old_git_revision,
@@ -340,7 +339,7 @@ def git_checkout(v: Verification, channel: Channel, dest: str) -> None:
     v.status('Checking out corresponding git revision')
     git = subprocess.Popen(['git',
                             '-C',
-                            channel.git_cachedir,
+                            git_cachedir(channel.git_repo),
                             'archive',
                             channel.git_revision],
                            stdout=subprocess.PIPE)
@@ -403,7 +402,7 @@ def git_revision_name(v: Verification, channel: Channel) -> str:
     v.status('Getting commit date')
     process = subprocess.run(['git',
                               '-C',
-                              channel.git_cachedir,
+                              git_cachedir(channel.git_repo),
                               'lo',
                               '-n1',
                               '--format=%ct-%h',