From a62fa84b0bb5abe3a2c52a047f47b6403ffcd54c Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Mon, 20 Mar 2023 23:34:50 +0200 Subject: Move user info gathering to its own workspace crate --- user-info/Cargo.toml | 7 +++++++ user-info/src/lib.rs | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 user-info/Cargo.toml create mode 100644 user-info/src/lib.rs (limited to 'user-info') diff --git a/user-info/Cargo.toml b/user-info/Cargo.toml new file mode 100644 index 0000000..63a3f7c --- /dev/null +++ b/user-info/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "user-info" +version = "0.1.0" +edition = "2021" + +[dependencies] +nix = { version = "0.26.2", default-features = false, features = ["user"] } diff --git a/user-info/src/lib.rs b/user-info/src/lib.rs new file mode 100644 index 0000000..bd5ff42 --- /dev/null +++ b/user-info/src/lib.rs @@ -0,0 +1,20 @@ +use nix::unistd::{getuid, User}; + +pub fn get_username() -> Option { + let uid = getuid(); + User::from_uid(uid).ok().flatten().map(|user| user.name) +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn it_returns_a_username() { + // We can't get too specific here because this is your actual username, + // but we at lease expect it to be some string, not None. + let username = get_username(); + let username_len = username.unwrap().trim().len(); + assert!(username_len > 0); + } +} -- cgit v1.2.3