summaryrefslogtreecommitdiffstats
path: root/src/recite
diff options
context:
space:
mode:
authorRory Dudley2024-02-22 23:12:24 -0700
committerRory Dudley2024-02-22 23:12:24 -0700
commit536e250653e5c140a6d9e60f1cd652b79135e7a6 (patch)
tree6a6b212c913f52d559ed9ea8a9477bebb9b38a2d /src/recite
parenta14fdf8faa85628baf06399961eb1f9ab4c5f3eb (diff)
downloaddwarvish-536e250653e5c140a6d9e60f1cd652b79135e7a6.tar.gz
Reorganization and comments
Broke out the structs for a poem into their own file: src/recite.rs. Also put the 'prefresh' function into it's own file: src/recite/path.rs. Commented most of the parser code (including structs and helper methods related to parsing (i.e. Verse, Stanza, Meter, Poem)). Renamed any instance of the 'paths' variable to 'path'.
Notes
Notes: The biggest task now is to cleanup Poem::recite. It has a ton of bogus error messages, and (seemingly) redundant code.
Diffstat (limited to 'src/recite')
-rw-r--r--src/recite/path.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/recite/path.rs b/src/recite/path.rs
new file mode 100644
index 0000000..28eb45b
--- /dev/null
+++ b/src/recite/path.rs
@@ -0,0 +1,42 @@
+use std::fs;
+use std::path::Path;
+
+/// Refresh the shell's $PATH
+///
+/// This function caches all valid paths within within the directories
+/// specified.
+///
+/// # Arguments
+/// * `paths` - A reference to a vector that holds a list to the shell $PATHs
+///
+/// # Returns
+/// * `bins: Vec<String>` - A new cache of all valid file paths in $PATH
+///
+/// # Examples
+/// ```
+/// let path = vec!["/bin"];
+/// let path = path.into_iter().map(Path::new).collect();
+/// let mut bins = prefresh(&path);
+/// ...
+/// // A situation occurs where the $PATH needs to be refreshed
+/// bins = prefresh(&path)
+/// ```
+pub fn prefresh(path: &Vec<&Path>) -> Vec<String> {
+ let mut bins: Vec<String> = Vec::new();
+
+ for p in path {
+ let files = fs::read_dir(p).expect(
+ format!(
+ "dwvsh: error: unable to read the contents of {}",
+ p.display().to_string()
+ )
+ .as_str(),
+ );
+
+ for file in files {
+ bins.push(file.unwrap().path().display().to_string());
+ }
+ }
+
+ bins
+}