diff options
| author | sigoden <sigoden@gmail.com> | 2025-01-19 08:44:22 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-19 08:44:22 +0800 |
| commit | e61aaae0e24eb0dbe25384f310d599f624a08126 (patch) | |
| tree | 2bae358602c1f229a84c19d765950434b408f4f5 /src | |
| parent | 42eedf9e38525c4526f2c3eb2ad67e5bd9b87dbc (diff) | |
| download | aichat-e61aaae0e24eb0dbe25384f310d599f624a08126.tar.gz | |
refactor: don't throw model/functions related error in info mode (#1101)
Diffstat (limited to 'src')
| -rw-r--r-- | src/config/mod.rs | 27 | ||||
| -rw-r--r-- | src/main.rs | 19 |
2 files changed, 28 insertions, 18 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index d6e710a..e2f9048 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -237,7 +237,7 @@ impl Default for Config { pub type GlobalConfig = Arc<RwLock<Config>>; impl Config { - pub fn init(working_mode: WorkingMode) -> Result<Self> { + pub fn init(working_mode: WorkingMode, info_flag: bool) -> Result<Self> { let config_path = Self::config_file(); let mut config = if !config_path.exists() { match env::var(get_env_name("platform")) { @@ -254,19 +254,26 @@ impl Config { }; config.working_mode = working_mode; + config.info_flag = info_flag; - config.load_envs(); + let setup = |config: &mut Self| -> Result<()> { + config.load_envs(); - if let Some(wrap) = config.wrap.clone() { - config.set_wrap(&wrap)?; - } - - config.load_functions()?; + if let Some(wrap) = config.wrap.clone() { + config.set_wrap(&wrap)?; + } - config.setup_model()?; - config.setup_document_loaders(); - config.setup_user_agent(); + config.load_functions()?; + config.setup_model()?; + config.setup_document_loaders(); + config.setup_user_agent(); + Ok(()) + }; + let ret = setup(&mut config); + if !info_flag { + ret?; + } Ok(config) } diff --git a/src/main.rs b/src/main.rs index a7b5198..e30efde 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,8 +45,15 @@ async fn main() -> Result<()> { } else { WorkingMode::Cmd }; + let info_flag = cli.info + || cli.list_models + || cli.list_roles + || cli.list_agents + || cli.list_rags + || cli.list_macros + || cli.list_sessions; setup_logger(working_mode.is_serve())?; - let config = Arc::new(RwLock::new(Config::init(working_mode)?)); + let config = Arc::new(RwLock::new(Config::init(working_mode, info_flag)?)); if let Err(err) = run(config, cli, text).await { render_error(err); std::process::exit(1); @@ -57,13 +64,6 @@ async fn main() -> Result<()> { async fn run(config: GlobalConfig, cli: Cli, text: Option<String>) -> Result<()> { let abort_signal = create_abort_signal(); - if let Some(addr) = cli.serve { - return serve::run(config, addr).await; - } - if cli.info { - config.write().info_flag = true; - } - if cli.list_models { for model in list_models(&config.read(), ModelType::Chat) { println!("{}", model.id()); @@ -153,6 +153,9 @@ async fn run(config: GlobalConfig, cli: Cli, text: Option<String>) -> Result<()> println!("{}", info); return Ok(()); } + if let Some(addr) = cli.serve { + return serve::run(config, addr).await; + } let is_repl = config.read().working_mode.is_repl(); if cli.rebuild_rag { Config::rebuild_rag(&config, abort_signal.clone()).await?; |
