diff options
author | 2022-09-19 23:37:26 -0700 | |
---|---|---|
committer | 2022-09-19 23:37:26 -0700 | |
commit | 37d191bc02dd5255ce0d6675017d5c491327e768 (patch) | |
tree | 52d53c7fbb3228e308c25eba2cb166deb1465777 /src | |
parent | da7b648971ef0f3077d4b8230d4cf2fcc1bb7719 (diff) | |
download | bun-37d191bc02dd5255ce0d6675017d5c491327e768.tar.gz bun-37d191bc02dd5255ce0d6675017d5c491327e768.tar.zst bun-37d191bc02dd5255ce0d6675017d5c491327e768.zip |
Update `process.argv` to more closely match node
Diffstat (limited to '')
-rw-r--r-- | src/bun.js/node/types.zig | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/bun.js/node/types.zig b/src/bun.js/node/types.zig index 313dad703..1576568c5 100644 --- a/src/bun.js/node/types.zig +++ b/src/bun.js/node/types.zig @@ -1801,22 +1801,25 @@ pub const Process = struct { ); var allocator = stack_fallback_allocator.get(); - // If it was launched with bun run or bun test, skip it - const skip: usize = @as(usize, @boolToInt( - vm.argv.len > 1 and (strings.eqlComptime(vm.argv[0], "run") or strings.eqlComptime(vm.argv[0], "wiptest")), - )); - var args = allocator.alloc( JSC.ZigString, - vm.argv.len + 1, + // argv omits "bun" because it could be "bun run" or "bun" and it's kind of ambiguous + // argv also omits the script name + vm.argv.len + 2, ) catch unreachable; var args_list = std.ArrayListUnmanaged(JSC.ZigString){ .items = args, .capacity = args.len }; args_list.items.len = 0; + args_list.appendAssumeCapacity( + JSC.ZigString.init( + // cheap way to get the first argument + bun.span(std.process.args().next().?), + ), + ); + args_list.appendAssumeCapacity(JSC.ZigString.init(vm.main).withEncoding()); + defer allocator.free(args); { - var args_iterator = std.process.args(); - - if (args_iterator.next()) |arg0| { + for (vm.argv) |arg0| { var argv0 = JSC.ZigString.init(std.mem.span(arg0)); argv0.setOutputEncoding(); // https://github.com/yargs/yargs/blob/adb0d11e02c613af3d9427b3028cc192703a3869/lib/utils/process-argv.ts#L1 @@ -1824,14 +1827,6 @@ pub const Process = struct { } } - if (vm.argv.len > skip) { - for (vm.argv[skip..]) |arg| { - var str = JSC.ZigString.init(arg); - str.setOutputEncoding(); - args_list.appendAssumeCapacity(str); - } - } - return JSC.JSValue.createStringArray(globalObject, args_list.items.ptr, args_list.items.len, true); } |