summaryrefslogtreecommitdiffstats
path: root/src/poem/anthology.rs
diff options
context:
space:
mode:
authorRory Dudley2024-03-28 23:26:02 -0600
committerRory Dudley2024-03-28 23:26:02 -0600
commit491d3fbff384d4b04483b54e5bb78d23bb1181c5 (patch)
tree470b0fc2ab0a476d682e104bdb03275ffd6b8671 /src/poem/anthology.rs
parent14a74aea0f02da53e0f61c572da2c5244ed80551 (diff)
downloaddwarvish-491d3fbff384d4b04483b54e5bb78d23bb1181c5.tar.gz
Remove hard-coded PATH
Use $PATH, instead of a hard-coded PATH from main(). This means that there is no longer a need to pass around PATH to repl()/recite()/path::refresh(), since path::refresh() can call env::var directly. Since the hard-coded paths were removed, there needs to be some way to define $PATH. When running the debug build, dwvsh will look in 'dist/etc/dwvshrc' for the initial environment setup. For the release target, dwvsh will look in '/etc/dwvshrc'. After the global rc file is sourced, dwvsh will try to source ~/.dwvshrc if it exists, so users can extend their environment without root access (assuming a release install).
Notes
Notes: Throughout a lot of this program, we're calling `env!("HOME")`, in order to get the user's home directory. Technically, this is not correct. The env!() macro resolves environment variables during compile time, while env::var() gets environment variables for the running process (i.e. the shell). See https://users.rust-lang.org/t/env-vs-env-var/88119 for more info. In the near future, this will need to be addressed. Might be worth looking into what other shells do, though one idea I had was to invoke '/usr/bin/id', grab the user's ID, and use it to grab the rest of the info from /etc/passwd. This would be handled in an /etc/dwvlogin or /etc/dwvprofile most likely.
Diffstat (limited to 'src/poem/anthology.rs')
-rw-r--r--src/poem/anthology.rs5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/poem/anthology.rs b/src/poem/anthology.rs
index 2781081..b9e747c 100644
--- a/src/poem/anthology.rs
+++ b/src/poem/anthology.rs
@@ -3,7 +3,6 @@ pub mod exit;
pub mod export;
pub mod source;
use crate::poem::Verse;
-use std::path::Path;
/// A static list of all the built-in commands
static INDEX: [&str; 4] = ["cd", "exit", "export", "source"];
@@ -20,13 +19,13 @@ pub fn lookup(verb: &str) -> Option<usize> {
INDEX.iter().position(|v| v.to_string() == verb)
}
-pub fn incant(verse: &Verse, index: usize, path: &Vec<&Path>, bins: &mut Vec<String>) -> i32 {
+pub fn incant(verse: &Verse, index: usize, bins: &mut Vec<String>) -> i32 {
let verb = INDEX[index];
match verb {
"cd" => cd::incant(verse),
"exit" => exit::incant(),
"export" => export::incant(verse),
- "source" => source::incant(verse, path, bins),
+ "source" => source::incant(verse, bins),
_ => unreachable!(),
}
}