diff --git a/.gitignore b/.gitignore index 6936990..fe42cc5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /target **/*.rs.bk Cargo.lock +.DS_Store diff --git a/README.md b/README.md index 5659fd2..e761399 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,9 @@ env_perm::check_or_set("DUMMY", 1).expect("Failed to find or set DUMMY"); // Append $HOME/some/cool/bin to $PATH // export PATH= "$HOME/some/cool/bin:$PATH" env_perm::append("PATH", "$HOME/some/cool/bin").expect("Couldn't find PATH"); +// Append $HOME/some/cooler/bin to the end of the path +// export PATH="$PATH:$HOME/some/cooler/bin" +env_perm::append_to_end("PATH", "$HOME/some/cooler/bin").expect("Couldn't find PATH"); // Sets a variable without checking if it exists. // Note you need to use a raw string literal to include "" // export DUMMY="/something" diff --git a/examples/set_dummy.rs b/examples/set_dummy.rs index 677d52e..b4cbd99 100644 --- a/examples/set_dummy.rs +++ b/examples/set_dummy.rs @@ -7,6 +7,9 @@ fn main() { // Append $HOME/some/cool/bin to $PATH // export PATH= "$HOME/some/cool/bin:$PATH" env_perm::append("PATH", "$HOME/some/cool/bin").expect("Couldn't find PATH"); + // Append $HOME/some/cooler/bin to the end of the path + // export PATH= "$PATH:$HOME/some/cooler/bin" + env_perm::append_to_end("PATH", "$HOME/some/cooler/bin").expect("Couldn't find PATH"); // Sets a variable without checking if it exists. // Note you need to use a raw string literal to include "" // export DUMMY="/something" diff --git a/src/lib.rs b/src/lib.rs index 808aa8e..f843eb6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,6 +8,9 @@ //! // Append $HOME/some/cool/bin to $PATH //! // export PATH= "$HOME/some/cool/bin:$PATH" //! env_perm::append("PATH", "$HOME/some/cool/bin").expect("Couldn't find PATH"); +//! // Append $HOME/some/cooler/bin to the front of the path +//! // export PATH="$PATH:$HOME/some/cooler/bin" +//! env_perm::append_to_end("PATH", "$HOME/some/cooler/bin").expect("Couldn't find PATH"); //! // Sets a variable without checking if it exists. //! // Note you need to use a raw string literal to include "" //! // export DUMMY="/something" @@ -42,6 +45,13 @@ pub fn append(var: T, value: T) -> io::Result<()> { profile.flush() } +/// Appends a value to an environment variable at either the front or end +pub fn append_to_end(var: T, value: T) -> io::Result<()> { + let mut profile = get_profile()?; + writeln!(profile, "\nexport {}=\"${}:{}\"", var, var, value)?; + profile.flush() +} + /// Sets an environment variable without checking /// if it exists. /// If it does you will end up with two