1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
use super::errors::*; use super::Env; use std::path::{Path, PathBuf}; impl Default for Env { // #region default fn default() -> Self { Env { username: whoami::username(), hostname: whoami::hostname(), distro: whoami::distro(), realname: whoami::realname(), devicename: whoami::devicename(), } } // #endregion default } impl Env { /// uses the PATH environment variable to search /// for a filename matching the specified name. /// if a matching filename is not found, it /// will check for the existence of name.exe /// and name.bat /// /// Example /// /// ``` /// use reef::Env; /// let git_path = Env::which("git").unwrap(); /// assert!(git_path.exists()); /// ``` pub fn which(name: &str) -> Result<PathBuf> { super::path::which(name) } /// extracts the text following the shebang #! /// /// Example /// /// given a file /// with the contents: /// /// #!C:/Ruby26-x64/bin/ruby.exe /// /// the shebang method will return C:/Ruby26-x64/bin/ruby.exe /// /// ``` /// use reef::Env; /// use std::env; /// let path = std::env::temp_dir().join("test.rb"); /// std::fs::write(&path,b"#!C:/Ruby26-x64/bin/ruby.exe")?; /// let target = Env::shebang(&path).unwrap(); /// assert_eq!("C:/Ruby26-x64/bin/ruby.exe",target); /// # Ok::<(), std::io::Error>(()) /// ``` pub fn shebang(path: &Path) -> Result<String> { super::path::shebang(path) } }