git.delta.rocks / jrsonnet / refs/commits / 352f51b2ac9d

difftreelog

source

src/main.rs1.0 KiBsourcehistory
1#![feature(once_cell)]23pub mod command;4pub mod host;5pub mod keys;67pub mod cmds;8pub mod nix;910mod fleetdata;1112use anyhow::Result;13use clap::Clap;1415use cmds::{build_systems::BuildSystems, secrets::Secrets};16use host::{Config, FleetOpts};1718#[derive(Clap)]19#[clap(version = "1.0", author = "CertainLach <iam@lach.pw>")]20enum Opts {21	/// Prepare systems for deployments22	BuildSystems(BuildSystems),23	/// Secret management24	Secrets(Secrets),25}2627#[derive(Clap)]28struct RootOpts {29	#[clap(flatten)]30	fleet_opts: FleetOpts,31	#[clap(subcommand)]32	command: Opts,33}3435fn run_command(config: &Config, command: Opts) -> Result<()> {36	match command {37		Opts::BuildSystems(c) => c.run(config)?,38		Opts::Secrets(s) => s.run(config)?,39	};40	Ok(())41}4243fn main() -> Result<()> {44	env_logger::Builder::new()45		.filter_level(log::LevelFilter::Info)46		.init();47	let opts = RootOpts::parse();48	let config = opts.fleet_opts.build()?;4950	match run_command(&config, opts.command) {51		Ok(()) => {52			config.save()?;53			Ok(())54		}55		Err(e) => {56			let _ = config.save();57			Err(e)58		}59	}60}