summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs23
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());