aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-04 21:40:23 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-04 21:40:23 -0700
commit4d1997066309328deaa79ebcdd9359875009277a (patch)
tree4e63b9e30ef5b7abb142d7f166df5a2dcdd02a0f /src
parent5ccb4f10d2be0ac53a46cca488b5a0e1e16b94fd (diff)
downloadbun-4d1997066309328deaa79ebcdd9359875009277a.tar.gz
bun-4d1997066309328deaa79ebcdd9359875009277a.tar.zst
bun-4d1997066309328deaa79ebcdd9359875009277a.zip
[bun upgrade] Prepare for version strings with a space
Diffstat (limited to 'src')
-rw-r--r--src/cli/upgrade_command.zig24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/cli/upgrade_command.zig b/src/cli/upgrade_command.zig
index baf6467e7..fd0a91d6b 100644
--- a/src/cli/upgrade_command.zig
+++ b/src/cli/upgrade_command.zig
@@ -376,9 +376,16 @@ pub const UpgradeCommand = struct {
env_loader.loadProcess();
var version: Version = undefined;
- const use_canary = strings.eqlComptime(env_loader.map.get("BUN_CANARY") orelse "0", "1") or
- // TODO: add separate args just for "bun upgrade"?
- strings.containsAny(bun.span(std.os.argv), "--canary");
+
+ const use_canary = brk: {
+ const default_use_canary = Environment.is_canary;
+
+ if (default_use_canary and strings.containsAny(bun.span(std.os.argv), "--stable"))
+ break :brk false;
+
+ break :brk strings.eqlComptime(env_loader.map.get("BUN_CANARY") orelse "0", "1") or
+ strings.containsAny(bun.span(std.os.argv), "--canary") or default_use_canary;
+ };
if (!use_canary) {
var refresher = std.Progress{};
@@ -557,7 +564,7 @@ pub const UpgradeCommand = struct {
.allocator = ctx.allocator,
.argv = &verify_argv,
.cwd = tmpdir_path,
- .max_output_bytes = 128,
+ .max_output_bytes = 512,
}) catch |err| {
save_dir_.deleteTree(version_name) catch {};
Output.prettyErrorln("<r><red>error<r> Failed to verify bun {s}<r>)", .{@errorName(err)});
@@ -573,13 +580,18 @@ pub const UpgradeCommand = struct {
// It should run successfully
// but we don't care about the version number if we're doing a canary build
if (!use_canary) {
- if (!strings.eql(std.mem.trim(u8, result.stdout, " \n\r\t"), version_name)) {
+ var version_string = result.stdout;
+ if (strings.indexOfChar(version_string, ' ')) |i| {
+ version_string = version_string[0..i];
+ }
+
+ if (!strings.eql(std.mem.trim(u8, version_string, " \n\r\t"), version_name)) {
save_dir_.deleteTree(version_name) catch {};
Output.prettyErrorln(
"<r><red>error<r>: The downloaded version of bun (<red>{s}<r>) doesn't match the expected version (<b>{s}<r>)<r>. Cancelled upgrade",
.{
- result.stdout[0..@minimum(result.stdout.len, 128)],
+ version_string[0..@minimum(version_string.len, 512)],
version_name,
},
);