mod init; mod server; use clap::Parser; use kxio::{filesystem, 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() { let fs = filesystem::FileSystem::new_real(None); let net = Network::new_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 => { server::start(fs, net); } }, } }