aboutsummaryrefslogtreecommitdiff
path: root/src/cli
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-02-25 00:28:25 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-02-25 00:48:36 -0800
commit293a9bc811e35943cc4d1dbdcbf20bbf77ac8c2f (patch)
tree52cd823205ca899e27e91480365bba82c5f6b871 /src/cli
parentb8c6865ce0a0385982e51de5614689b43f265562 (diff)
downloadbun-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.zig2
-rw-r--r--src/cli/package_manager_command.zig84
-rw-r--r--src/cli/upgrade_command.zig2
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();