diff options
author | 2023-01-22 03:24:32 -0800 | |
---|---|---|
committer | 2023-01-22 03:24:32 -0800 | |
commit | 043e408b15c1c6cf2ad985a0001dbe7a0a02795b (patch) | |
tree | e7ba63736a58bd33530a90bc64ab09915202e753 | |
parent | 9f6658b9813f69ecb5f982dad3969af6b454138b (diff) | |
download | bun-043e408b15c1c6cf2ad985a0001dbe7a0a02795b.tar.gz bun-043e408b15c1c6cf2ad985a0001dbe7a0a02795b.tar.zst bun-043e408b15c1c6cf2ad985a0001dbe7a0a02795b.zip |
cleanup execArgv a little
-rw-r--r-- | src/bun.js/node/types.zig | 23 | ||||
-rw-r--r-- | test/bun.js/process.test.js | 4 |
2 files changed, 23 insertions, 4 deletions
diff --git a/src/bun.js/node/types.zig b/src/bun.js/node/types.zig index 038c7e6a0..5da5aa511 100644 --- a/src/bun.js/node/types.zig +++ b/src/bun.js/node/types.zig @@ -1894,19 +1894,34 @@ pub const Process = struct { pub fn getExecArgv(globalObject: *JSC.JSGlobalObject) callconv(.C) JSC.JSValue { const allocator = globalObject.allocator(); + var vm = globalObject.bunVM(); var args = allocator.alloc( JSC.ZigString, // argv omits "bun" because it could be "bun run" or "bun" and it's kind of ambiguous // argv also omits the script name - std.os.argv.len, + std.os.argv.len -| 1, ) catch unreachable; defer allocator.free(args); + var used: usize = 0; + const offset: usize = 1; + + for (std.os.argv[@min(std.os.argv.len, offset)..]) |arg_| { + const arg = bun.span(arg_); + if (arg.len == 0) + continue; + + if (arg[0] != '-') + continue; + + if (vm.argv.len > 0 and strings.eqlLong(vm.argv[0], arg, true)) + break; + + args[used] = JSC.ZigString.fromUTF8(arg); - for (std.os.argv) |arg, i| { - args[i] = JSC.ZigString.fromUTF8(bun.span(arg)); + used += 1; } - return JSC.JSValue.createStringArray(globalObject, args.ptr, args.len, true); + return JSC.JSValue.createStringArray(globalObject, args.ptr, used, true); } pub fn getArgv(globalObject: *JSC.JSGlobalObject) callconv(.C) JSC.JSValue { diff --git a/test/bun.js/process.test.js b/test/bun.js/process.test.js index befff6cbf..57b07ef53 100644 --- a/test/bun.js/process.test.js +++ b/test/bun.js/process.test.js @@ -190,3 +190,7 @@ it("process.emitWarning", () => { process.emitWarning("-- Testing process.on('warning') --"); expect(called).toBe(1); }); + +it("process.execArgv", () => { + expect(process.execArgv instanceof Array).toBe(true); +}); |