aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-22 03:24:32 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-01-22 03:24:32 -0800
commit043e408b15c1c6cf2ad985a0001dbe7a0a02795b (patch)
treee7ba63736a58bd33530a90bc64ab09915202e753
parent9f6658b9813f69ecb5f982dad3969af6b454138b (diff)
downloadbun-043e408b15c1c6cf2ad985a0001dbe7a0a02795b.tar.gz
bun-043e408b15c1c6cf2ad985a0001dbe7a0a02795b.tar.zst
bun-043e408b15c1c6cf2ad985a0001dbe7a0a02795b.zip
cleanup execArgv a little
-rw-r--r--src/bun.js/node/types.zig23
-rw-r--r--test/bun.js/process.test.js4
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);
+});