aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/bun.js/node/node_os.zig13
-rw-r--r--src/bun.js/os.exports.js2
-rw-r--r--test/bun.js/os.test.js4
3 files changed, 19 insertions, 0 deletions
diff --git a/src/bun.js/node/node_os.zig b/src/bun.js/node/node_os.zig
index f7a91393e..b0c693fb4 100644
--- a/src/bun.js/node/node_os.zig
+++ b/src/bun.js/node/node_os.zig
@@ -26,6 +26,7 @@ pub const Os = struct {
module.put(globalObject, JSC.ZigString.static("homedir"), JSC.NewFunction(globalObject, JSC.ZigString.static("homedir"), 0, homedir, true));
module.put(globalObject, JSC.ZigString.static("hostname"), JSC.NewFunction(globalObject, JSC.ZigString.static("hostname"), 0, hostname, true));
module.put(globalObject, JSC.ZigString.static("loadavg"), JSC.NewFunction(globalObject, JSC.ZigString.static("loadavg"), 0, loadavg, true));
+ module.put(globalObject, JSC.ZigString.static("machine"), JSC.NewFunction(globalObject, JSC.ZigString.static("machine"), 0, machine, true));
module.put(globalObject, JSC.ZigString.static("networkInterfaces"), JSC.NewFunction(globalObject, JSC.ZigString.static("networkInterfaces"), 0, networkInterfaces, true));
module.put(globalObject, JSC.ZigString.static("platform"), JSC.NewFunction(globalObject, JSC.ZigString.static("platform"), 0, platform, true));
module.put(globalObject, JSC.ZigString.static("release"), JSC.NewFunction(globalObject, JSC.ZigString.static("release"), 0, release, true));
@@ -289,6 +290,18 @@ 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());
diff --git a/src/bun.js/os.exports.js b/src/bun.js/os.exports.js
index 60eacab55..ab3e5cee7 100644
--- a/src/bun.js/os.exports.js
+++ b/src/bun.js/os.exports.js
@@ -8,6 +8,7 @@ function bound(obj) {
homedir: obj.homedir.bind(obj),
hostname: obj.hostname.bind(obj),
loadavg: obj.loadavg.bind(obj),
+ machine: obj.machine.bind(obj),
networkInterfaces: obj.networkInterfaces.bind(obj),
platform: obj.platform.bind(obj),
release: obj.release.bind(obj),
@@ -35,6 +36,7 @@ export var {
homedir,
hostname,
loadavg,
+ machine,
networkInterfaces,
platform,
release,
diff --git a/test/bun.js/os.test.js b/test/bun.js/os.test.js
index c907e74ef..9ae82d8ae 100644
--- a/test/bun.js/os.test.js
+++ b/test/bun.js/os.test.js
@@ -115,6 +115,10 @@ it("networkInterfaces", () => {
}
});
+it("machine", () => {
+ expect(os.machine().length > 1).toBe(true);
+});
+
it("EOL", () => {
if (process.platform === "win32") expect(os.EOL).toBe("\\r\\n");
else expect(os.EOL).toBe("\n");