trello-to-deck/src/lib.rs

62 lines
1.2 KiB
Rust
Raw Normal View History

//
use std::path::PathBuf;
2024-12-01 07:13:23 +00:00
use clap::Parser;
pub use config::AppConfig;
use kxio::{fs::FileSystem, net::Net};
mod api_result;
2024-11-29 19:19:36 +00:00
mod config;
mod init;
2024-11-29 17:43:49 +00:00
mod macros;
pub mod nextcloud;
mod template;
// mod trello;
#[cfg(test)]
mod tests;
2024-11-29 17:43:49 +00:00
2024-11-29 14:31:40 +00:00
pub const NAME: &str = "trello-to-deck";
#[derive(Parser, Debug)]
#[clap(version = clap::crate_version!(), author = clap::crate_authors!(), about = clap::crate_description!())]
struct Commands {
#[clap(subcommand)]
command: Command,
}
#[derive(Parser, Debug)]
enum Command {
Init,
Check,
Import,
}
#[derive(Clone)]
pub struct Ctx {
pub fs: FileSystem,
pub net: Net,
}
impl Default for Ctx {
fn default() -> Self {
Self {
fs: kxio::fs::new(PathBuf::default()),
net: kxio::net::new(),
}
}
}
2024-11-29 14:31:40 +00:00
#[cfg_attr(test, mutants::skip)]
pub async fn run(ctx: Ctx) -> color_eyre::Result<()> {
2024-11-29 14:31:40 +00:00
color_eyre::install()?;
let commands = Commands::parse();
2024-11-29 19:19:36 +00:00
let _cfg = config::AppConfig::load(&ctx)?;
2024-11-29 14:31:40 +00:00
match commands.command {
Command::Init => init::run(&ctx)?,
2024-11-29 14:31:40 +00:00
Command::Check => todo!("check"),
Command::Import => todo!("import"),
};
Ok(())
2024-11-29 14:31:40 +00:00
}