summaryrefslogtreecommitdiffstats
path: root/src/repl/handler.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2023-10-30 19:26:06 +0800
committerGitHub <noreply@github.com>2023-10-30 19:26:06 +0800
commite86ad7dc165ba19fbe01d822a54a9975e4b17862 (patch)
treea9c953d4e48cde477af329fc1434fb7a410213db /src/repl/handler.rs
parent42339fac423136fb647c52429d7dd2228144ec98 (diff)
downloadaichat-e86ad7dc165ba19fbe01d822a54a9975e4b17862.tar.gz
feat: add `.info role` and `.info session` (#183)
Diffstat (limited to 'src/repl/handler.rs')
-rw-r--r--src/repl/handler.rs28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/repl/handler.rs b/src/repl/handler.rs
index d70abbe..afe016a 100644
--- a/src/repl/handler.rs
+++ b/src/repl/handler.rs
@@ -1,7 +1,7 @@
use crate::client::init_client;
use crate::config::SharedConfig;
use crate::print_now;
-use crate::render::render_stream;
+use crate::render::{render_stream, MarkdownRender};
use std::fs;
use std::io::Read;
@@ -15,7 +15,9 @@ use std::cell::RefCell;
pub enum ReplCmd {
Submit(String),
- ViewInfo,
+ Info,
+ RoleInfo,
+ SessionInfo,
SetModel(String),
SetRole(String),
ExitRole,
@@ -66,7 +68,7 @@ impl ReplCmdHandler {
let _ = self.copy(&buffer);
}
}
- ReplCmd::ViewInfo => {
+ ReplCmd::Info => {
let output = self.config.read().info()?;
print_now!("{}\n\n", output.trim_end());
}
@@ -75,8 +77,15 @@ impl ReplCmdHandler {
print_now!("\n");
}
ReplCmd::SetRole(name) => {
- let output = self.config.write().set_role(&name)?;
- print_now!("{}\n\n", output.trim_end());
+ self.config.write().set_role(&name)?;
+ print_now!("\n");
+ }
+ ReplCmd::RoleInfo => {
+ if let Some(role) = &self.config.read().role {
+ print_now!("{}\n\n", role.info()?);
+ } else {
+ bail!("No role")
+ }
}
ReplCmd::ExitRole => {
self.config.write().clear_role()?;
@@ -86,6 +95,15 @@ impl ReplCmdHandler {
self.config.write().start_session(&name)?;
print_now!("\n");
}
+ ReplCmd::SessionInfo => {
+ if let Some(session) = &self.config.read().session {
+ let render_options = self.config.read().get_render_options();
+ let mut markdown_render = MarkdownRender::init(render_options)?;
+ print_now!("{}\n\n", session.render(&mut markdown_render)?);
+ } else {
+ bail!("No session")
+ }
+ }
ReplCmd::ExitSession => {
self.config.write().end_session()?;
print_now!("\n");