diff options
| author | sigoden <sigoden@gmail.com> | 2023-10-28 21:39:17 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-28 21:39:17 +0800 |
| commit | bc44026ff8828f532e9eba138e2ba35f7c247271 (patch) | |
| tree | 98c55ad31a543ff3cd56e297751d32ee9ca960a7 /src/main.rs | |
| parent | 1575d441724a27854c8f9fe1510a47a3050ae28d (diff) | |
| download | aichat-bc44026ff8828f532e9eba138e2ba35f7c247271.tar.gz | |
feat: enhance session/conversation (#162)
* feat: enhance session/conversation
* updates
* updates
* cut version v0.9.0-rc2
* add .session name completion
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/src/main.rs b/src/main.rs index 65bc5f2..d73d4c1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -42,9 +42,20 @@ fn main() -> Result<()> { } exit(0); } + if cli.list_sessions { + let sessions = config.read().list_sessions()?.join("\n"); + println!("{sessions}"); + exit(0); + } if cli.dry_run { config.write().dry_run = true; } + if let Some(session) = &cli.session { + config.write().start_session(session)?; + } + if let Some(model) = &cli.model { + config.write().set_model(model)?; + } let role = match &cli.role { Some(name) => Some( config @@ -54,9 +65,6 @@ fn main() -> Result<()> { ), None => None, }; - if let Some(model) = &cli.model { - config.write().set_model(model)?; - } config.write().role = role; if cli.no_highlight { config.write().highlight = false; @@ -65,7 +73,11 @@ fn main() -> Result<()> { config.write().add_prompt(prompt)?; } if cli.info { - let info = config.read().info()?; + let info = if let Some(session) = &config.read().session { + session.info()? + } else { + config.read().info()? + }; println!("{info}"); exit(0); } @@ -92,6 +104,9 @@ fn start_directive( input: &str, no_stream: bool, ) -> Result<()> { + if let Some(sesion) = &config.read().session { + sesion.guard_save()?; + } if !stdout().is_terminal() { config.write().highlight = false; } @@ -118,12 +133,11 @@ fn start_directive( wg.wait(); output }; - config.read().save_message(input, &output) + config.write().save_message(input, &output) } fn start_interactive(config: SharedConfig) -> Result<()> { cl100k_base_singleton(); - config.write().on_repl()?; - let mut repl = Repl::init(config.clone())?; + let mut repl: Repl = Repl::init(config.clone())?; repl.run(config) } |
