diff options
author | 2022-02-25 00:28:25 -0800 | |
---|---|---|
committer | 2022-02-25 00:48:36 -0800 | |
commit | 293a9bc811e35943cc4d1dbdcbf20bbf77ac8c2f (patch) | |
tree | 52cd823205ca899e27e91480365bba82c5f6b871 /src/cli | |
parent | b8c6865ce0a0385982e51de5614689b43f265562 (diff) | |
download | bun-293a9bc811e35943cc4d1dbdcbf20bbf77ac8c2f.tar.gz bun-293a9bc811e35943cc4d1dbdcbf20bbf77ac8c2f.tar.zst bun-293a9bc811e35943cc4d1dbdcbf20bbf77ac8c2f.zip |
[bun install] Add metadata hash
Diffstat (limited to 'src/cli')
-rw-r--r-- | src/cli/create_command.zig | 2 | ||||
-rw-r--r-- | src/cli/package_manager_command.zig | 84 | ||||
-rw-r--r-- | src/cli/upgrade_command.zig | 2 |
3 files changed, 88 insertions, 0 deletions
diff --git a/src/cli/create_command.zig b/src/cli/create_command.zig index b82370a5f..b13084c03 100644 --- a/src/cli/create_command.zig +++ b/src/cli/create_command.zig @@ -247,6 +247,8 @@ const BUN_CREATE_DIR = ".bun-create"; var home_dir_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; pub const CreateCommand = struct { pub fn exec(ctx: Command.Context, _: []const []const u8) !void { + @setCold(true); + Global.configureAllocator(.{ .long_running = false }); try NetworkThread.init(); diff --git a/src/cli/package_manager_command.zig b/src/cli/package_manager_command.zig index 12ce37021..80d12125d 100644 --- a/src/cli/package_manager_command.zig +++ b/src/cli/package_manager_command.zig @@ -10,6 +10,34 @@ const Path = @import("../resolver/resolve_path.zig"); pub const PackageManagerCommand = struct { pub fn printHelp(_: std.mem.Allocator) void {} + pub fn printHash(ctx: Command.Context, lockfile_: []const u8) !void { + @setCold(true); + var lockfile_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined; + @memcpy(&lockfile_buffer, lockfile_.ptr, lockfile_.len); + lockfile_buffer[lockfile_.len] = 0; + var lockfile = lockfile_buffer[0..lockfile_.len :0]; + var pm = try PackageManager.init(ctx, null, &PackageManager.install_params); + + const load_lockfile = pm.lockfile.loadFromDisk(ctx.allocator, ctx.log, lockfile); + if (load_lockfile == .not_found) { + if (pm.options.log_level != .silent) + Output.prettyError("Lockfile not found", .{}); + Global.exit(1); + } + + if (load_lockfile == .err) { + if (pm.options.log_level != .silent) + Output.prettyError("Error loading lockfile: {s}", .{@errorName(load_lockfile.err.value)}); + Global.exit(1); + } + + Output.flush(); + Output.disableBuffering(); + try Output.writer().print("{}", .{load_lockfile.ok.fmtMetaHash()}); + Output.enableBuffering(); + Global.exit(0); + } + pub fn exec(ctx: Command.Context) !void { var args = try std.process.argsAlloc(ctx.allocator); args = args[1..]; @@ -57,6 +85,62 @@ pub const PackageManagerCommand = struct { Output.flush(); return; + } else if (strings.eqlComptime(first, "hash")) { + const load_lockfile = pm.lockfile.loadFromDisk(ctx.allocator, ctx.log, "bun.lockb"); + if (load_lockfile == .not_found) { + if (pm.options.log_level != .silent) + Output.prettyError("Lockfile not found", .{}); + Global.exit(1); + } + + if (load_lockfile == .err) { + if (pm.options.log_level != .silent) + Output.prettyError("Error loading lockfile: {s}", .{@errorName(load_lockfile.err.value)}); + Global.exit(1); + } + + _ = try pm.lockfile.hasMetaHashChanged(false); + + Output.flush(); + Output.disableBuffering(); + try Output.writer().print("{}", .{load_lockfile.ok.fmtMetaHash()}); + Output.enableBuffering(); + Global.exit(0); + } else if (strings.eqlComptime(first, "hash-print")) { + const load_lockfile = pm.lockfile.loadFromDisk(ctx.allocator, ctx.log, "bun.lockb"); + if (load_lockfile == .not_found) { + if (pm.options.log_level != .silent) + Output.prettyError("Lockfile not found", .{}); + Global.exit(1); + } + + if (load_lockfile == .err) { + if (pm.options.log_level != .silent) + Output.prettyError("Error loading lockfile: {s}", .{@errorName(load_lockfile.err.value)}); + Global.exit(1); + } + + Output.flush(); + Output.disableBuffering(); + try Output.writer().print("{}", .{load_lockfile.ok.fmtMetaHash()}); + Output.enableBuffering(); + Global.exit(0); + } else if (strings.eqlComptime(first, "hash-string")) { + const load_lockfile = pm.lockfile.loadFromDisk(ctx.allocator, ctx.log, "bun.lockb"); + if (load_lockfile == .not_found) { + if (pm.options.log_level != .silent) + Output.prettyError("Lockfile not found", .{}); + Global.exit(1); + } + + if (load_lockfile == .err) { + if (pm.options.log_level != .silent) + Output.prettyError("Error loading lockfile: {s}", .{@errorName(load_lockfile.err.value)}); + Global.exit(1); + } + + _ = try pm.lockfile.hasMetaHashChanged(true); + Global.exit(0); } } }; diff --git a/src/cli/upgrade_command.zig b/src/cli/upgrade_command.zig index 3febe4cee..b7a1a086f 100644 --- a/src/cli/upgrade_command.zig +++ b/src/cli/upgrade_command.zig @@ -340,6 +340,8 @@ pub const UpgradeCommand = struct { const exe_subpath = Version.folder_name ++ std.fs.path.sep_str ++ "bun"; pub fn exec(ctx: Command.Context) !void { + @setCold(true); + _exec(ctx) catch |err| { Output.prettyErrorln("<r>bun upgrade failed with error: <red><b>{s}<r>\n\n<cyan>Please upgrade manually<r>:\n <b>curl https://bun.sh/install | bash<r>\n\n", .{@errorName(err)}); Output.flush(); |