Skip to content

Commit

Permalink
feat(os): add release impl
Browse files Browse the repository at this point in the history
  • Loading branch information
ecyrbe committed Feb 23, 2020
1 parent 8b646e8 commit 423cb11
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 10 deletions.
2 changes: 1 addition & 1 deletion cli/js/deno.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ export {
ShutdownMode,
shutdown
} from "./net.ts";
export { dir, env, exit, isTTY, execPath, hostname, loadavg } from "./os.ts";
export { dir, env, exit, isTTY, execPath, hostname, loadavg, osRelease } from "./os.ts";
export {
permissions,
PermissionName,
Expand Down
1 change: 1 addition & 0 deletions cli/js/dispatch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ export let OP_SIGNAL_BIND: number;
export let OP_SIGNAL_UNBIND: number;
export let OP_SIGNAL_POLL: number;
export let OP_LOADAVG: number;
export let OP_OS_RELEASE: number;

const PLUGIN_ASYNC_HANDLER_MAP: Map<number, AsyncHandler> = new Map();

Expand Down
6 changes: 6 additions & 0 deletions cli/js/lib.deno.ns.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ declare namespace Deno {
*/
export function hostname(): string;

/** Get the OS release. Requires the `--allow-env` flag.
*
* console.log(Deno.op_release());
*/
export function osRelease(): string;

/** Exit the Deno process with optional exit code. */
export function exit(code?: number): never;

Expand Down
9 changes: 9 additions & 0 deletions cli/js/os.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,15 @@ export function hostname(): string {
return sendSync(dispatch.OP_HOSTNAME);
}

/** Get OS release.
* Requires the `--allow-env` flag.
*
* console.log(Deno.osRelease());
*/
export function osRelease(): string {
return sendSync(dispatch.OP_OS_RELEASE);
}

/** Exit the Deno process with optional exit code. */
export function exit(code = 0): never {
sendSync(dispatch.OP_EXIT, { code });
Expand Down
16 changes: 16 additions & 0 deletions cli/js/os_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -315,3 +315,19 @@ testPerm({ env: false }, function hostnamePerm(): void {
}
assert(caughtError);
});

testPerm({ env: true }, function releaseDir(): void {
assertNotEquals(Deno.osRelease(), "");
});

testPerm({ env: false }, function releasePerm(): void {
let caughtError = false;
try {
Deno.osRelease();
} catch (err) {
caughtError = true;
assert(err instanceof Deno.Err.PermissionDenied);
assertEquals(err.name, "PermissionDenied");
}
assert(caughtError);
});
14 changes: 14 additions & 0 deletions cli/ops/os.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ pub fn init(i: &mut Isolate, s: &State) {
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))));
i.register_op(
"os_release",
s.core_op(json_op(s.stateful_op(op_os_release))),
);
}

#[derive(Deserialize)]
Expand Down Expand Up @@ -184,3 +188,13 @@ fn op_hostname(
let hostname = sys_info::hostname().unwrap_or_else(|_| "".to_owned());
Ok(JsonOp::Sync(json!(hostname)))
}

fn op_os_release(
state: &State,
_args: Value,
_zero_copy: Option<ZeroCopyBuf>,
) -> Result<JsonOp, ErrBox> {
state.check_env()?;
let release = sys_info::os_release().unwrap_or_else(|_| "".to_owned());
Ok(JsonOp::Sync(json!(release)))
}
4 changes: 2 additions & 2 deletions std/node/os.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,9 @@ export function platform(): string {
return process.platform;
}

/** Not yet implemented */
/** Returns the operating system as a string */
export function release(): string {
notImplemented(SEE_GITHUB_ISSUE);
return Deno.osRelease();
}

/** Not yet implemented */
Expand Down
14 changes: 7 additions & 7 deletions std/node/os_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ test({
}
});

test({
name: "release is a string",
fn() {
assertEquals(typeof os.release(), "string");
}
});

test({
name: "getPriority(): PID must be a 32 bit integer",
fn() {
Expand Down Expand Up @@ -205,13 +212,6 @@ test({
Error,
"Not implemented"
);
assertThrows(
() => {
os.release();
},
Error,
"Not implemented"
);
assertThrows(
() => {
os.setPriority(0);
Expand Down

0 comments on commit 423cb11

Please sign in to comment.