git.delta.rocks / jrsonnet / refs/commits / f06ae761f6d1

difftreelog

source

src/main.rs1.0 KiBsourcehistory
1pub mod command;2pub mod host;3pub mod keys;45pub mod cmds;6pub mod nix;78mod fleetdata;910use anyhow::Result;11use clap::Clap;1213use cmds::{build_systems::BuildSystems, secrets::Secrets};14use host::{Config, FleetOpts};1516#[derive(Clap)]17#[clap(version = "1.0", author = "CertainLach <iam@lach.pw>")]18enum Opts {19	/// Prepare systems for deployments20	BuildSystems(BuildSystems),21	/// Secret management22	Secrets(Secrets),23}2425#[derive(Clap)]26struct RootOpts {27	#[clap(flatten)]28	fleet_opts: FleetOpts,29	#[clap(subcommand)]30	command: Opts,31}3233fn run_command(config: &Config, command: Opts) -> Result<()> {34	match command {35		Opts::BuildSystems(c) => c.run(config)?,36		Opts::Secrets(s) => s.run(config)?,37	};38	Ok(())39}4041fn main() -> Result<()> {42	env_logger::Builder::new()43		.filter_level(log::LevelFilter::Info)44		.init();45	let opts = RootOpts::parse();46	let config = opts.fleet_opts.build()?;4748	match run_command(&config, opts.command) {49		Ok(()) => {50			config.save()?;51			Ok(())52		}53		Err(e) => {54			let _ = config.save();55			Err(e)56		}57	}58}