diff options
author | Rory Dudley | 2024-03-28 23:26:02 -0600 |
---|---|---|
committer | Rory Dudley | 2024-03-28 23:26:02 -0600 |
commit | 491d3fbff384d4b04483b54e5bb78d23bb1181c5 (patch) | |
tree | 470b0fc2ab0a476d682e104bdb03275ffd6b8671 /src/poem/anthology | |
parent | 14a74aea0f02da53e0f61c572da2c5244ed80551 (diff) | |
download | dwarvish-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')
-rw-r--r-- | src/poem/anthology/source.rs | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/poem/anthology/source.rs b/src/poem/anthology/source.rs index 1449994..f7b9a0b 100644 --- a/src/poem/anthology/source.rs +++ b/src/poem/anthology/source.rs @@ -1,9 +1,8 @@ use crate::poem::Verse; use crate::poem::{read::Readable, recite::Reciteable, Poem}; use std::fs; -use std::path::Path; -pub fn incant(verse: &Verse, path: &Vec<&Path>, bins: &mut Vec<String>) -> i32 { +pub fn incant(verse: &Verse, bins: &mut Vec<String>) -> i32 { let files = match verse.clause() { Some(clause) => clause, None => { @@ -14,7 +13,7 @@ pub fn incant(verse: &Verse, path: &Vec<&Path>, bins: &mut Vec<String>) -> i32 { for file in files { let poetry = match fs::read_to_string(&file) { - Ok(contents) => contents, + Ok(poetry) => poetry, Err(e) => { eprintln!( "source: could not load {}: {}", @@ -33,7 +32,7 @@ pub fn incant(verse: &Verse, path: &Vec<&Path>, bins: &mut Vec<String>) -> i32 { } }; - match poem.recite(path, bins, None) { + match poem.recite(bins, None) { Ok(_) => {} Err(e) => { eprintln!("dwvsh: {}", e.to_string().to_lowercase()); |