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

difftreelog

source

src/main.rs1.2 KiBsourcehistory
1#![feature(once_cell)]23pub mod command;4pub mod host;5pub mod keys;67pub mod cmds;8pub mod db;9pub mod nix;1011mod fleetdata;1213use anyhow::Result;14use clap::Clap;1516use cmds::{build_systems::BuildSystems, generate_secrets::GenerateSecrets, secrets::Secrets};17use host::{Config, FleetOpts};1819#[derive(Clap)]20#[clap(version = "1.0", author = "CertainLach <iam@lach.pw>")]21enum Opts {22	/// Force generation of missing secrets23	GenerateSecrets(GenerateSecrets),24	/// Prepare systems for deployments25	BuildSystems(BuildSystems),26	/// Secret management27	Secrets(Secrets),28}2930#[derive(Clap)]31struct RootOpts {32	#[clap(flatten)]33	fleet_opts: FleetOpts,34	#[clap(subcommand)]35	command: Opts,36}3738fn run_command(config: &Config, command: Opts) -> Result<()> {39	match command {40		Opts::BuildSystems(c) => c.run(config)?,41		Opts::GenerateSecrets(c) => c.run()?,42		Opts::Secrets(s) => s.run(config)?,43	};44	Ok(())45}4647fn main() -> Result<()> {48	env_logger::Builder::new()49		.filter_level(log::LevelFilter::Info)50		.init();51	let opts = RootOpts::parse();52	let config = opts.fleet_opts.build()?;5354	match run_command(&config, opts.command) {55		Ok(()) => {56			config.save()?;57			Ok(())58		}59		Err(e) => {60			let _ = config.save();61			Err(e)62		}63	}64}