diff options
author | 2021-12-28 01:09:46 -0800 | |
---|---|---|
committer | 2021-12-28 01:09:46 -0800 | |
commit | 8ccb833421ac84a9434bdb4fc8105da084fa4d31 (patch) | |
tree | f9998919c9ad108d78ec670d11d60ca864a7a2e4 /src | |
parent | 93ec969005ff02320613764305af069f2448cc8d (diff) | |
download | bun-8ccb833421ac84a9434bdb4fc8105da084fa4d31.tar.gz bun-8ccb833421ac84a9434bdb4fc8105da084fa4d31.tar.zst bun-8ccb833421ac84a9434bdb4fc8105da084fa4d31.zip |
[Bun.js] Add Bun.argv api, so you can get the arguments that started a script
Diffstat (limited to 'src')
-rw-r--r-- | src/javascript/jsc/javascript.zig | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/javascript/jsc/javascript.zig b/src/javascript/jsc/javascript.zig index a0efe4a54..d826db486 100644 --- a/src/javascript/jsc/javascript.zig +++ b/src/javascript/jsc/javascript.zig @@ -182,6 +182,28 @@ pub const Bun = struct { return ZigString.init(VirtualMachine.vm.bundler.options.routes.asset_prefix_path).toValue(VirtualMachine.vm.global).asRef(); } + pub fn getArgv( + this: void, + ctx: js.JSContextRef, + thisObject: js.JSValueRef, + prop: js.JSStringRef, + exception: js.ExceptionRef, + ) js.JSValueRef { + if (comptime Environment.isWindows) { + @compileError("argv not supported on windows"); + } + + var argv_list = std.heap.stackFallback(128, getAllocator(ctx)); + var allocator = argv_list.get(); + var argv = allocator.alloc(ZigString, std.os.argv.len) catch unreachable; + defer if (argv.len > 128) allocator.free(argv); + for (std.os.argv) |arg, i| { + argv[i] = ZigString.init(std.mem.span(arg)); + } + + return JSValue.createStringArray(VirtualMachine.vm.global, argv.ptr, argv.len).asObjectRef(); + } + pub fn getRoutesDir( this: void, ctx: js.JSContextRef, @@ -587,6 +609,10 @@ pub const Bun = struct { .get = getAssetPrefix, .ts = d.ts{ .name = "assetPrefix", .@"return" = "string" }, }, + .argv = .{ + .get = getArgv, + .ts = d.ts{ .name = "argv", .@"return" = "string[]" }, + }, .env = .{ .get = EnvironmentVariables.getter, }, @@ -2378,4 +2404,3 @@ pub const BuildError = struct { }; pub const JSPrivateDataTag = JSPrivateDataPtr.Tag; - |