git.delta.rocks / jrsonnet / refs/commits / 4daa40be7e69

difftreelog

source

cmds/fleet/src/main.rs1.2 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, info::Info, secrets::Secrets};15use host::{Config, FleetOpts};1617#[derive(StructOpt)]18enum Opts {19	/// Prepare systems for deployments20	BuildSystems(BuildSystems),21	/// Secret management22	Secrets(Secrets),23	/// Config parsing24	Info(Info),25}2627#[derive(StructOpt)]28#[structopt(29	version = "1.0",30	author,31	global_setting(ColorAuto),32	global_setting(ColoredHelp)33)]34struct RootOpts {35	#[structopt(flatten)]36	fleet_opts: FleetOpts,37	#[structopt(subcommand)]38	command: Opts,39}4041fn run_command(config: &Config, command: Opts) -> Result<()> {42	match command {43		Opts::BuildSystems(c) => c.run(config)?,44		Opts::Secrets(s) => s.run(config)?,45		Opts::Info(i) => i.run(config)?,46	};47	Ok(())48}4950fn main() -> Result<()> {51	env_logger::Builder::new()52		.filter_level(log::LevelFilter::Info)53		.init();54	let opts = RootOpts::from_args();55	let config = opts.fleet_opts.build()?;5657	match run_command(&config, opts.command) {58		Ok(()) => {59			config.save()?;60			Ok(())61		}62		Err(e) => {63			let _ = config.save();64			Err(e)65		}66	}67}