git.delta.rocks / jrsonnet / refs/commits / 52a24f69aae7

difftreelog

source

cmds/fleet/src/main.rs1.1 KiBsourcehistory
1pub mod command;2pub mod host;3pub mod keys;45pub mod cmds;6pub mod nix;78mod fleetdata;910use anyhow::Result;11use structopt::clap::AppSettings::*;12use structopt::StructOpt;1314use cmds::{build_systems::BuildSystems, secrets::Secrets};15use host::{Config, FleetOpts};1617#[derive(StructOpt)]18enum Opts {19	/// Prepare systems for deployments20	BuildSystems(BuildSystems),21	/// Secret management22	Secrets(Secrets),23}2425#[derive(StructOpt)]26#[structopt(27	version = "1.0",28	author,29	global_setting(ColorAuto),30	global_setting(ColoredHelp)31)]32struct RootOpts {33	#[structopt(flatten)]34	fleet_opts: FleetOpts,35	#[structopt(subcommand)]36	command: Opts,37}3839fn run_command(config: &Config, command: Opts) -> Result<()> {40	match command {41		Opts::BuildSystems(c) => c.run(config)?,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::from_args();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}