summaryrefslogtreecommitdiffstats
path: root/src/repl/handler.rs
diff options
context:
space:
mode:
authorLeo Bergnéhr <leo@bergnehr.se>2023-10-26 13:25:53 +0200
committerGitHub <noreply@github.com>2023-10-26 19:25:53 +0800
commitc3f9ef6c396ba692e82cdfaa929429c85eebd289 (patch)
treec2fb59abefe4618f3f0cbf0094f82d8e8c91e97c /src/repl/handler.rs
parent66fd547c0fac30d98565a92d93824237a4813669 (diff)
downloadaichat-c3f9ef6c396ba692e82cdfaa929429c85eebd289.tar.gz
feat: add .read command (#145)
Diffstat (limited to 'src/repl/handler.rs')
-rw-r--r--src/repl/handler.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/repl/handler.rs b/src/repl/handler.rs
index e512cb5..45836ba 100644
--- a/src/repl/handler.rs
+++ b/src/repl/handler.rs
@@ -3,6 +3,8 @@ use crate::config::SharedConfig;
use crate::print_now;
use crate::render::render_stream;
use crate::utils::copy;
+use std::fs;
+use std::io::Read;
use super::abort::SharedAbortSignal;
@@ -22,6 +24,7 @@ pub enum ReplCmd {
StartConversation,
EndConversatoin,
Copy,
+ ReadFile(String),
}
#[allow(clippy::module_name_repetitions)]
@@ -105,6 +108,12 @@ impl ReplCmdHandler {
copy(&self.reply.borrow()).with_context(|| "Failed to copy the last output")?;
print_now!("\n");
}
+ ReplCmd::ReadFile(file) => {
+ let mut contents = String::new();
+ let mut file = fs::File::open(file).expect("Unable to open file");
+ file.read_to_string(&mut contents).expect("Unable to read file");
+ self.handle(ReplCmd::Submit(contents))?;
+ }
}
Ok(())
}