Skip to content

Commit

Permalink
feat(unstable): add Deno.getGid (#14528)
Browse files Browse the repository at this point in the history
  • Loading branch information
imjamesb authored and bartlomieju committed Jun 2, 2022
1 parent 81a8cc4 commit 3896f6d
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 0 deletions.
12 changes: 12 additions & 0 deletions cli/dts/lib.deno.unstable.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,18 @@ declare namespace Deno {
*/
export function getUid(): number | null;

/** **Unstable** new API. yet to be vetted.
*
* Returns the group id of the process on POSIX platforms. Returns null on windows.
*
* ```ts
* console.log(Deno.getGid());
* ```
*
* Requires `allow-env` permission.
*/
export function getGid(): number | null;

/** All possible types for interfacing with foreign functions */
export type NativeType =
| "void"
Expand Down
10 changes: 10 additions & 0 deletions cli/tests/unit/os_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -204,3 +204,13 @@ Deno.test({ permissions: { env: true } }, function getUid() {
assert(uid > 0);
}
});

Deno.test({ permissions: { env: true } }, function getGid() {
if (Deno.build.os === "windows") {
assertEquals(Deno.getGid(), null);
} else {
const gid = Deno.getGid();
assert(typeof gid === "number");
assert(gid > 0);
}
});
5 changes: 5 additions & 0 deletions runtime/js/30_os.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@
return core.opSync("op_network_interfaces");
}

function getGid() {
return core.opSync("op_getgid");
}

function getUid() {
return core.opSync("op_getuid");
}
Expand Down Expand Up @@ -94,6 +98,7 @@
env,
execPath,
exit,
getGid,
getUid,
hostname,
loadavg,
Expand Down
1 change: 1 addition & 0 deletions runtime/js/90_deno_ns.js
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@
osRelease: __bootstrap.os.osRelease,
systemMemoryInfo: __bootstrap.os.systemMemoryInfo,
networkInterfaces: __bootstrap.os.networkInterfaces,
getGid: __bootstrap.os.getGid,
getUid: __bootstrap.os.getUid,
sleepSync: __bootstrap.timers.sleepSync,
listen: __bootstrap.netUnstable.listen,
Expand Down
17 changes: 17 additions & 0 deletions runtime/ops/os.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ pub fn init(maybe_exit_code: Option<Arc<AtomicI32>>) -> Extension {
op_exit::decl(),
op_delete_env::decl(),
op_get_env::decl(),
op_getgid::decl(),
op_getuid::decl(),
op_hostname::decl(),
op_loadavg::decl(),
Expand Down Expand Up @@ -225,6 +226,22 @@ fn op_system_memory_info(
}
}

#[cfg(not(windows))]
#[op]
fn op_getgid(state: &mut OpState) -> Result<Option<u32>, AnyError> {
super::check_unstable(state, "Deno.getGid");
state.borrow_mut::<Permissions>().env.check_all()?;
unsafe { Ok(Some(libc::getgid())) }
}

#[cfg(windows)]
#[op]
fn op_getgid(state: &mut OpState) -> Result<Option<u32>, AnyError> {
super::check_unstable(state, "Deno.getGid");
state.borrow_mut::<Permissions>().env.check_all()?;
Ok(None)
}

#[cfg(not(windows))]
#[op]
fn op_getuid(state: &mut OpState) -> Result<Option<u32>, AnyError> {
Expand Down

0 comments on commit 3896f6d

Please sign in to comment.