diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/src/main.rs b/src/main.rs index 8470651..7f3b90d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,40 +1,29 @@ use anyhow::{Context, Result}; use clap::Parser; -use figment::{ - providers::{Env, Format, Serialized, Toml}, - Figment, -}; -use projectr::{project::ProjectItem, search::Search, Cli, Config}; +use projectr::{project::ProjectItem, Config}; use tokio::signal; #[tokio::main] async fn main() -> Result<()> { - let cli = Cli::parse(); - - let config: Config = Figment::new() - .merge(Figment::from(Serialized::defaults(&cli.projects))) - .merge(Toml::file("projectr.toml")) - .merge(Env::prefixed("PROJECTR_")) - .extract() - .context("Failed to extract config")?; + let cli = Config::parse(); tracing_subscriber::fmt::fmt() .pretty() .with_writer(std::io::stderr) - .with_max_level(cli.verbosity) + .with_max_level(&cli.verbosity) .init(); let res = tokio::select! { res = signal::ctrl_c() => res.map_err(Into::into), - res = run(&config) => res.context("Failed to run projectr"), + res = run(cli) => res.context("Failed to run projectr"), }; res } #[tracing::instrument] -pub async fn run(config: &Config) -> Result<()> { - let mut projects: Vec<ProjectItem> = Search::from(config.paths.to_owned()).collect(); +pub async fn run(config: Config) -> Result<()> { + let mut projects: Vec<ProjectItem> = config.search.into_iter().collect(); projects.sort_unstable_by_key(|p| *p.timestamp()); |