summaryrefslogtreecommitdiffstats
path: root/src/poem
diff options
context:
space:
mode:
Diffstat (limited to 'src/poem')
-rw-r--r--src/poem/anthology.rs5
-rw-r--r--src/poem/anthology/source.rs7
-rw-r--r--src/poem/recite.rs48
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());