X-Git-Url: http://git.scottworley.com/pinch/blobdiff_plain/530104d72eadd4a2700a5f8ba6d80dd7fed66d4e..9a21f5897e6be8839d01a54107fdc7224a8a4133:/pinch.py diff --git a/pinch.py b/pinch.py index b5e3b81..8c9e976 100644 --- a/pinch.py +++ b/pinch.py @@ -127,6 +127,15 @@ def copy_to_nix_store(v: Verification, filename: str) -> str: return process.stdout.decode().strip() # type: ignore # (for old mypy) +def symlink_archive(v: Verification, path: str) -> str: + with tempfile.TemporaryDirectory() as td: + archive_filename = os.path.join(td, 'link.tar.gz') + os.symlink(path, os.path.join(td, 'link')) + with tarfile.open(archive_filename, mode='x:gz') as t: + t.add(os.path.join(td, 'link'), arcname='link') + return copy_to_nix_store(v, archive_filename) + + class AliasSearchPath(NamedTuple): alias_of: str @@ -143,12 +152,7 @@ class SymlinkSearchPath(NamedTuple): return SymlinkPin() def fetch(self, v: Verification, _: Pin) -> str: - with tempfile.TemporaryDirectory() as td: - archive_filename = os.path.join(td, 'link.tar.gz') - os.symlink(self.path, os.path.join(td, 'link')) - with tarfile.open(archive_filename, mode='x:gz') as t: - t.add(os.path.join(td, 'link'), arcname='link') - return copy_to_nix_store(v, archive_filename) + return symlink_archive(v, self.path) class GitSearchPath(NamedTuple):