diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/doc/ts_type.rs | 4 | ||||
-rw-r--r-- | cli/js/deno.ts | 2 | ||||
-rw-r--r-- | cli/js/lib.deno.unstable.d.ts | 12 | ||||
-rw-r--r-- | cli/js/ops/os.ts | 4 | ||||
-rw-r--r-- | cli/ops/os.rs | 12 | ||||
-rw-r--r-- | cli/tests/unit/os_test.ts | 16 |
6 files changed, 47 insertions, 3 deletions
diff --git a/cli/doc/ts_type.rs b/cli/doc/ts_type.rs index ec1a5e7e9..e1677f13e 100644 --- a/cli/doc/ts_type.rs +++ b/cli/doc/ts_type.rs @@ -529,7 +529,7 @@ impl Into<TsTypeDef> for &TsType { TsUnionOrIntersectionType(union_or_inter) => union_or_inter.into(), TsArrayType(array_type) => array_type.into(), TsTupleType(tuple_type) => tuple_type.into(), - TsTypeOperator(type_op_type) => type_op_type.into(), + TsTypeOperator(type_op_name) => type_op_name.into(), TsParenthesizedType(paren_type) => paren_type.into(), TsRestType(rest_type) => rest_type.into(), TsOptionalType(optional_type) => optional_type.into(), @@ -737,7 +737,7 @@ pub fn ts_type_ann_to_def(type_ann: &TsTypeAnn) -> TsTypeDef { TsUnionOrIntersectionType(union_or_inter) => union_or_inter.into(), TsArrayType(array_type) => array_type.into(), TsTupleType(tuple_type) => tuple_type.into(), - TsTypeOperator(type_op_type) => type_op_type.into(), + TsTypeOperator(type_op_name) => type_op_name.into(), TsParenthesizedType(paren_type) => paren_type.into(), TsRestType(rest_type) => rest_type.into(), TsOptionalType(optional_type) => optional_type.into(), diff --git a/cli/js/deno.ts b/cli/js/deno.ts index 5bc69fc7b..e4211c23d 100644 --- a/cli/js/deno.ts +++ b/cli/js/deno.ts @@ -53,7 +53,7 @@ export { export { metrics, Metrics } from "./ops/runtime.ts"; export { mkdirSync, mkdir, MkdirOptions } from "./ops/fs/mkdir.ts"; export { connect, listen, Listener, Conn } from "./net.ts"; -export { env, exit, execPath } from "./ops/os.ts"; +export { dir, env, exit, execPath, osName } from "./ops/os.ts"; export { run, RunOptions, Process, ProcessStatus } from "./process.ts"; export { DirEntry, readDirSync, readDir } from "./ops/fs/read_dir.ts"; export { readFileSync, readFile } from "./read_file.ts"; diff --git a/cli/js/lib.deno.unstable.d.ts b/cli/js/lib.deno.unstable.d.ts index dc50416fc..f425dec56 100644 --- a/cli/js/lib.deno.unstable.d.ts +++ b/cli/js/lib.deno.unstable.d.ts @@ -32,6 +32,18 @@ declare namespace Deno { * Requires `allow-read` and `allow-write` permissions. */ export function linkSync(oldpath: string, newpath: string): void; + /** + * Returns the os name. + * + * ```ts + * console.log(Deno.osName()); // e.g. "Linux" + * ``` + * + */ + + export function osName(): string; + + /** Creates `newpath` as a hard link to `oldpath`. /** **UNSTABLE**: This API needs a security review. * * Creates `newpath` as a hard link to `oldpath`. diff --git a/cli/js/ops/os.ts b/cli/js/ops/os.ts index e63d8b358..915106495 100644 --- a/cli/js/ops/os.ts +++ b/cli/js/ops/os.ts @@ -72,3 +72,7 @@ export function dir(kind: DirKind): string | null { export function execPath(): string { return sendSync("op_exec_path"); } + +export function osName(): string { + return sendSync("op_name"); +} diff --git a/cli/ops/os.rs b/cli/ops/os.rs index ab7ed2876..77c547362 100644 --- a/cli/ops/os.rs +++ b/cli/ops/os.rs @@ -20,6 +20,7 @@ pub fn init(i: &mut CoreIsolate, s: &State) { i.register_op("op_hostname", s.stateful_json_op(op_hostname)); i.register_op("op_loadavg", s.stateful_json_op(op_loadavg)); i.register_op("op_os_release", s.stateful_json_op(op_os_release)); + i.register_op("op_name", s.stateful_json_op(op_name)); } #[derive(Deserialize)] @@ -206,3 +207,14 @@ fn op_os_release( let release = sys_info::os_release().unwrap_or_else(|_| "".to_string()); Ok(JsonOp::Sync(json!(release))) } + +fn op_name( + state: &State, + _args: Value, + _zero_copy: &mut [ZeroCopyBuf], +) -> Result<JsonOp, OpError> { + state.check_unstable("Deno.osName"); + state.check_env()?; + let os_name = sys_info::os_type().unwrap_or_else(|_| "".to_string()); + Ok(JsonOp::Sync(json!(os_name))) +} diff --git a/cli/tests/unit/os_test.ts b/cli/tests/unit/os_test.ts index 9698692c7..deb0385a8 100644 --- a/cli/tests/unit/os_test.ts +++ b/cli/tests/unit/os_test.ts @@ -326,6 +326,22 @@ unitTest({ perms: { env: false } }, function hostnamePerm(): void { assert(caughtError); }); +unitTest({ perms: { env: true } }, function osName(): void { + assertNotEquals(Deno.osName(), ""); +}); + +unitTest({ perms: { env: false } }, function osNamePerm(): void { + let caughtError = false; + try { + Deno.osName(); + } catch (err) { + caughtError = true; + assert(err instanceof Deno.errors.PermissionDenied); + assertEquals(err.name, "PermissionDenied"); + } + assert(caughtError); +}); + unitTest({ perms: { env: true } }, function releaseDir(): void { assertNotEquals(Deno.osRelease(), ""); }); |