diff options
| author | sigoden <sigoden@gmail.com> | 2024-03-27 10:25:42 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-27 10:25:42 +0800 |
| commit | 4cfd6c8e9fd516167317de439c8136a7481dc2bb (patch) | |
| tree | 1b7ed83b4284bdf29d628e6a56d86985cfe2d5ef /src/config/mod.rs | |
| parent | bd9a6a87254bb2748beb9cd3b58ea15be6c9686c (diff) | |
| download | aichat-4cfd6c8e9fd516167317de439c8136a7481dc2bb.tar.gz | |
refactor: config add in_repl property (#381)
Diffstat (limited to 'src/config/mod.rs')
| -rw-r--r-- | src/config/mod.rs | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index cd857b8..2bde0f7 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -93,6 +93,8 @@ pub struct Config { pub model: Model, #[serde(skip)] pub last_message: Option<(Input, String)>, + #[serde(skip)] + pub in_repl: bool, } impl Default for Config { @@ -122,6 +124,7 @@ impl Default for Config { session: None, model: Default::default(), last_message: None, + in_repl: false, } } } @@ -595,8 +598,7 @@ impl Config { format!("Failed to cleanup previous '{TEMP_SESSION_NAME}' session") })?; } - let mut session = Session::new(self, TEMP_SESSION_NAME); - session.set_save_session(None); + let session = Session::new(self, TEMP_SESSION_NAME); self.session = Some(session); } Some(name) => { @@ -605,9 +607,9 @@ impl Config { self.session = Some(Session::new(self, name)); } else { let session = Session::load(name, &session_path)?; - let model = session.model().to_string(); + let model_id = session.model().to_string(); self.session = Some(session); - self.set_model(&model)?; + self.set_model(&model_id)?; } } } @@ -628,16 +630,13 @@ impl Config { Ok(()) } - /// End the current session, saving it if necessary - /// The single argument `interactive` ensures that non-interactive sessions will never prompt - pub fn end_session(&mut self, interactive: bool) -> Result<()> { + pub fn end_session(&mut self) -> Result<()> { if let Some(mut session) = self.session.take() { self.last_message = None; let save_session = session.save_session(); if session.dirty && save_session != Some(false) { - if save_session.is_none() { - if !interactive { - // If we're not interactive, we will not prompt and will not save + if save_session.is_none() || session.is_temp() { + if !self.in_repl { return Ok(()); } let ans = Confirm::new("Save session?").with_default(false).prompt()?; |
