diff options
author | 2021-11-15 02:19:36 -0800 | |
---|---|---|
committer | 2021-12-16 19:18:51 -0800 | |
commit | b5fd121f262d0dbeb14ce97487b5b299f1e62774 (patch) | |
tree | efc4c7c81ef11b4eae0563948b09fee457a51d54 /src/install/install.zig | |
parent | c292ea7b94785c0d08e90dd918352cecb4a18498 (diff) | |
download | bun-b5fd121f262d0dbeb14ce97487b5b299f1e62774.tar.gz bun-b5fd121f262d0dbeb14ce97487b5b299f1e62774.tar.zst bun-b5fd121f262d0dbeb14ce97487b5b299f1e62774.zip |
[bun install] WIP
Diffstat (limited to '')
-rw-r--r-- | src/install/install.zig | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/install/install.zig b/src/install/install.zig index 31332c8f9..7b7a804ee 100644 --- a/src/install/install.zig +++ b/src/install/install.zig @@ -1753,7 +1753,6 @@ pub const PackageManager = struct { resolved_package_index: PackageIndex = PackageIndex{}, task_queue: TaskDependencyQueue = TaskDependencyQueue{}, - progress: *std.Progress, const PackageIndex = std.AutoHashMapUnmanaged(u64, *Package); const PackageManifestMap = std.HashMapUnmanaged(u32, Npm.PackageManifest, IdentityContext, 80); @@ -2175,6 +2174,8 @@ pub const PackageManager = struct { Output.flush(); } + // var progress = std.Progress{}; + // var node = progress.start(name: []const u8, estimated_total_items: usize) manager = PackageManager{ .enable_cache = enable_cache, .cache_directory_path = cache_directory_path, @@ -2186,6 +2187,7 @@ pub const PackageManager = struct { .root_package = root, .thread_pool = ThreadPool.init(.{}), .resolve_tasks = TaskChannel{}, + // .progress }; package_list.allocator = ctx.allocator; @@ -2197,11 +2199,18 @@ pub const PackageManager = struct { .is_main = true, }, ); - + var total_count = count; + var extracted_count: usize = 0; while (count > 0) : (count = @maximum(count, 1) - 1) { - while (manager.resolve_tasks.tryReadItem() catch null) |task| { + while (manager.resolve_tasks.tryReadItem() catch null) |task_| { + var task: *Task = task_; switch (task.tag) { .package_manifest => { + if (task.status == .fail) { + Output.prettyErrorln("Failed to download package manifest for {s}", .{task.request.package_manifest}); + Output.flush(); + continue; + } const manifest = task.data.package_manifest; var entry = try manager.manifests.getOrPutValue(ctx.allocator, @truncate(u32, manifest.name.hash), manifest); const dependency_list = manager.task_queue.get(task.id).?; @@ -2210,13 +2219,27 @@ pub const PackageManager = struct { var dependency: *Dependency = TaskCallbackContext.get(item, Dependency).?; if (try manager.enqueueDependency(dependency, dependency.required)) |new_task| { count += 1; + total_count += 1; } } }, + .tarball_download => { + if (task.status == .fail) { + Output.prettyErrorln("Failed to download package manifest for {s}", .{task.request.package_manifest}); + Output.flush(); + continue; + } + extracted_count += 1; + task.request.tarball_download.package.preinstall_state = Package.PreinstallState.done; + }, } } } + if (verbose_install) { + Output.prettyErrorln("Preinstall complete.\n Extracted: {d} Tasks: {d}", .{ extracted_count, total_count }); + } + try manager.installDependencies(); } }; |