extern crate clap; extern crate reqwest; extern crate serde; extern crate simple_home_dir; use cl_cli::cli::Cli; use cl_cli::cli::Commands::{Planning, Test}; use cl_cli::cli::Planning::I2work; use cl_cli::error::GeneralError; use clap::Parser; use std::path::PathBuf; use std::process::exit; #[tokio::main] async fn main() { let cli = Cli::parse(); let mut default_config_path = PathBuf::new(); default_config_path.push(simple_home_dir::home_dir().unwrap()); default_config_path.push(".config/cl-cli/config.toml"); let config_path = match cli.config.as_deref() { Some(p) => p, None => &default_config_path, }; let config = match cl_cli::config::build_config(config_path) { Ok(c) => c, Err(e) => { let general_error: GeneralError = e.into(); println!("{}", general_error.description); exit(1); } }; let result = match cli.command { Some(Planning(I2work(args))) => { cl_cli::planning::issue2work::issue2work_cli(config, &args).await } Some(Test) => cl_cli::debug::debug(config).await, None => Err(GeneralError { description: "No command launched".to_string(), }), }; match result { Ok(()) => exit(0), Err(e) => { println!("Error: {}", e.description); exit(1) } }; }