aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-12-28 01:09:46 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-12-28 01:09:46 -0800
commit8ccb833421ac84a9434bdb4fc8105da084fa4d31 (patch)
treef9998919c9ad108d78ec670d11d60ca864a7a2e4 /src
parent93ec969005ff02320613764305af069f2448cc8d (diff)
downloadbun-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.zig27
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;
-