// mod alerts; mod file_watcher; mod forge; mod init; mod repo; mod server; mod webhook; #[cfg(test)] mod tests; use git_next_core::git; use std::path::PathBuf; use anyhow::Result; use clap::Parser; use kxio::{fs, network::Network}; #[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, #[clap(subcommand)] Server(Server), } #[derive(Parser, Debug)] enum Server { Init, Start, } fn main() -> Result<()> { let fs = fs::new(PathBuf::default()); let net = Network::new_real(); let repository_factory = git::repository::factory::real(); let commands = Commands::parse(); match commands.command { Command::Init => { init::run(&fs)?; } Command::Server(server) => match server { Server::Init => { server::init(&fs)?; } Server::Start => { let sleep_duration = std::time::Duration::from_secs(10); server::start(fs, net, repository_factory, sleep_duration)?; } }, } Ok(()) }