diff options
Diffstat (limited to 'cli/ops/os.rs')
-rw-r--r-- | cli/ops/os.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/cli/ops/os.rs b/cli/ops/os.rs index 8def5ac1e..d1786a6db 100644 --- a/cli/ops/os.rs +++ b/cli/ops/os.rs @@ -19,6 +19,7 @@ pub fn init(i: &mut Isolate, s: &State) { i.register_op("get_env", s.core_op(json_op(s.stateful_op(op_get_env)))); i.register_op("get_dir", s.core_op(json_op(s.stateful_op(op_get_dir)))); i.register_op("hostname", s.core_op(json_op(s.stateful_op(op_hostname)))); + i.register_op("loadavg", s.core_op(json_op(s.stateful_op(op_loadavg)))); } #[derive(Deserialize)] @@ -158,6 +159,22 @@ fn op_is_tty( }))) } +fn op_loadavg( + state: &State, + _args: Value, + _zero_copy: Option<ZeroCopyBuf>, +) -> Result<JsonOp, ErrBox> { + state.check_env()?; + match sys_info::loadavg() { + Ok(loadavg) => Ok(JsonOp::Sync(json!([ + loadavg.one, + loadavg.five, + loadavg.fifteen + ]))), + Err(_) => Ok(JsonOp::Sync(json!([0f64, 0f64, 0f64]))), + } +} + fn op_hostname( state: &State, _args: Value, |