diff options
-rw-r--r-- | src/bun.js/node/node_os.zig | 33 | ||||
-rw-r--r-- | src/bun.js/os.exports.js | 2 | ||||
-rw-r--r-- | test/bun.js/os.test.js | 16 |
3 files changed, 38 insertions, 13 deletions
diff --git a/src/bun.js/node/node_os.zig b/src/bun.js/node/node_os.zig index b0c693fb4..3a8f5a55b 100644 --- a/src/bun.js/node/node_os.zig +++ b/src/bun.js/node/node_os.zig @@ -37,6 +37,7 @@ pub const Os = struct { module.put(globalObject, JSC.ZigString.static("uptime"), JSC.NewFunction(globalObject, JSC.ZigString.static("uptime"), 0, uptime, true)); module.put(globalObject, JSC.ZigString.static("userInfo"), JSC.NewFunction(globalObject, JSC.ZigString.static("userInfo"), 0, userInfo, true)); module.put(globalObject, JSC.ZigString.static("version"), JSC.NewFunction(globalObject, JSC.ZigString.static("version"), 0, version, true)); + module.put(globalObject, JSC.ZigString.static("machine"), JSC.NewFunction(globalObject, JSC.ZigString.static("machine"), 0, machine, true)); module.put(globalObject, JSC.ZigString.static("devNull"), JSC.ZigString.init(devNull).withEncoding().toValue(globalObject)); module.put(globalObject, JSC.ZigString.static("EOL"), JSC.ZigString.init(EOL).withEncoding().toValue(globalObject)); @@ -290,18 +291,6 @@ pub const Os = struct { }); } - pub fn machine(globalThis: *JSC.JSGlobalObject, _: *JSC.CallFrame) callconv(.C) JSC.JSValue { - JSC.markBinding(@src()); - - const machine_name = if (comptime Environment.isLinux) b: { - const uts = std.os.uname(); - break :b std.mem.span(&uts.machine); - } - else "unknown"; - - return JSC.ZigString.init(machine_name).withEncoding().toValueGC(globalThis); - } - pub fn networkInterfaces(globalThis: *JSC.JSGlobalObject, _: *JSC.CallFrame) callconv(.C) JSC.JSValue { JSC.markBinding(@src()); @@ -463,4 +452,24 @@ pub const Os = struct { var name_buffer: [std.os.HOST_NAME_MAX]u8 = undefined; return JSC.ZigString.init(C.getVersion(&name_buffer)).withEncoding().toValueGC(globalThis); } + + inline fn getMachineName() []const u8 { + return switch (@import("builtin").target.cpu.arch) { + .arm => "arm", + .aarch64 => "arm64", + .mips => "mips", + .mips64 => "mips64", + .powerpc64 => "ppc64", + .powerpc64le => "ppc64le", + .s390x => "s390x", + .x86 => "i386", + .x86_64 => "x86_64", + else => "unknown", + }; + } + + pub fn machine(globalThis: *JSC.JSGlobalObject, _: *JSC.CallFrame) callconv(.C) JSC.JSValue { + JSC.markBinding(@src()); + return JSC.ZigString.static(comptime getMachineName()).toValue(globalThis); + } }; diff --git a/src/bun.js/os.exports.js b/src/bun.js/os.exports.js index ab3e5cee7..e4bbabe6e 100644 --- a/src/bun.js/os.exports.js +++ b/src/bun.js/os.exports.js @@ -19,6 +19,7 @@ function bound(obj) { uptime: obj.uptime.bind(obj), userInfo: obj.userInfo.bind(obj), version: obj.version.bind(obj), + machine: obj.machine.bind(obj), devNull: obj.devNull, EOL: obj.EOL, constants: obj.constants, @@ -47,6 +48,7 @@ export var { uptime, userInfo, version, + machine, devNull, EOL, constants, diff --git a/test/bun.js/os.test.js b/test/bun.js/os.test.js index 9ae82d8ae..87c03d5d4 100644 --- a/test/bun.js/os.test.js +++ b/test/bun.js/os.test.js @@ -116,7 +116,21 @@ it("networkInterfaces", () => { }); it("machine", () => { - expect(os.machine().length > 1).toBe(true); + const possibleValues = [ + "arm", + "arm64", + "aarch64", + "mips", + "mips64", + "ppc64", + "ppc64le", + "s390", + "s390x", + "i386", + "i686", + "x86_64", + ]; + expect(possibleValues.includes(os.machine())).toBe(true); }); it("EOL", () => { |