aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-09-17 01:12:59 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-09-17 01:12:59 -0700
commitaf6609b0a3311a41dd4f77b10360cdef589b2bd1 (patch)
tree9279753cac9b959d2d895ca6b93de039e18de0c5 /src
parent3ae950d829c3fa02a7b568b00ea6c38aad7effa2 (diff)
downloadbun-af6609b0a3311a41dd4f77b10360cdef589b2bd1.tar.gz
bun-af6609b0a3311a41dd4f77b10360cdef589b2bd1.tar.zst
bun-af6609b0a3311a41dd4f77b10360cdef589b2bd1.zip
[bun install] Add a package index via symlinks to ~/.bun/install/cache
Diffstat (limited to 'src')
-rw-r--r--src/install/extract_tarball.zig14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/install/extract_tarball.zig b/src/install/extract_tarball.zig
index 8dea0dfba..ebf73d1a0 100644
--- a/src/install/extract_tarball.zig
+++ b/src/install/extract_tarball.zig
@@ -257,6 +257,7 @@ fn extract(this: *const ExtractTarball, tgz_bytes: []const u8) !string {
);
Global.crash();
};
+
defer final_dir.close();
// and get the fd path
var final_path = std.os.getFdPath(
@@ -272,5 +273,18 @@ fn extract(this: *const ExtractTarball, tgz_bytes: []const u8) !string {
);
Global.crash();
};
+
+ // create an index storing each version of a package installed
+ create_index: {
+ var index_dir = cache_dir.makeOpenPath(name, .{ .iterate = true }) catch break :create_index;
+ defer index_dir.close();
+ index_dir.symLink(
+ final_path,
+ // trim "name@" from the prefix
+ folder_name[name.len + 1 ..],
+ .{},
+ ) catch break :create_index;
+ }
+
return try FileSystem.instance.dirname_store.append(@TypeOf(final_path), final_path);
}