diff options
Diffstat (limited to 'src/poem')
-rw-r--r-- | src/poem/anthology.rs | 5 | ||||
-rw-r--r-- | src/poem/anthology/source.rs | 7 | ||||
-rw-r--r-- | src/poem/recite.rs | 48 |
3 files changed, 11 insertions, 49 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!(), } } 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()); diff --git a/src/poem/recite.rs b/src/poem/recite.rs index a88007d..f2af591 100644 --- a/src/poem/recite.rs +++ b/src/poem/recite.rs @@ -6,26 +6,15 @@ use crate::poem::elements::rune::Rune; use std::env; use std::{ io, - path::Path, sync::{Arc, Mutex}, }; pub trait Reciteable { - fn recite( - &self, - path: &Vec<&Path>, - bins: &mut Vec<String>, - stdout: Option<bool>, - ) -> Result<String, io::Error>; + fn recite(&self, bins: &mut Vec<String>, stdout: Option<bool>) -> Result<String, io::Error>; } impl Reciteable for Poem { - fn recite( - &self, - path: &Vec<&Path>, - bins: &mut Vec<String>, - stdout: Option<bool>, - ) -> Result<String, io::Error> { + fn recite(&self, bins: &mut Vec<String>, stdout: Option<bool>) -> Result<String, io::Error> { // Should we print to stdout or always capture it let stdout = stdout.unwrap_or(true); @@ -58,7 +47,7 @@ impl Reciteable for Poem { let envar = name[1..].to_string(); let envar = match env::var(envar) { Ok(envar) => envar.to_string(), - Err(_) => "".to_string(), + Err(_) => String::new(), }; *word = word.replace(name.as_str(), envar.as_str()); } @@ -95,7 +84,7 @@ impl Reciteable for Poem { Some(poem) => poem, None => break, // TODO: Return an error }; - let out = poem.recite(path, bins, Some(false))?; + let out = poem.recite(bins, Some(false))?; if out.contains("\n") { let mut out = out.split("\n"); let next = out.next().unwrap_or("").trim(); @@ -129,35 +118,10 @@ impl Reciteable for Poem { None => {} } - // // Check if the user wants to exit the shell - // if verse.verb() == "exit" || verse.verb() == "quit" { - // exit(0); - // } - // - // // Check if the user wants to change directories - // if verse.verb() == "cd" { - // let path = match verse.clause() { - // Some(path) => path[0].to_string(), - // None => env!("HOME").to_string(), - // }; - // - // match std::env::set_current_dir(&path) { - // Ok(_) => continue, - // Err(e) => { - // eprintln!( - // "cd: unable to change into {}: {}", - // path, - // e.to_string().to_lowercase() - // ); - // continue; - // } - // } - // } - // Incant the verse if it's a built-in let index = anthology::lookup(&verse.verb()); let status = if index.is_some() { - anthology::incant(&verse, index.unwrap(), path, bins) + anthology::incant(&verse, index.unwrap(), bins) } else { // Incant the verse, based on its meter // Check if the verb exists @@ -165,7 +129,7 @@ impl Reciteable for Poem { // again // If it still doesn't exist, print an error if !verse.spellcheck(bins) { - *bins = path::refresh(path); + *bins = path::refresh(); if !verse.spellcheck(bins) { eprintln!("dwvsh: {}: command not found", verse.verb()); |