diff options
| author | 2022-09-17 01:12:59 -0700 | |
|---|---|---|
| committer | 2022-09-17 01:12:59 -0700 | |
| commit | af6609b0a3311a41dd4f77b10360cdef589b2bd1 (patch) | |
| tree | 9279753cac9b959d2d895ca6b93de039e18de0c5 /src | |
| parent | 3ae950d829c3fa02a7b568b00ea6c38aad7effa2 (diff) | |
| download | bun-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.zig | 14 |
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); } |
