aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bun.js/node/node_os.zig33
-rw-r--r--src/bun.js/os.exports.js2
-rw-r--r--test/bun.js/os.test.js16
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", () => {