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

difftreelog

source

cmds/fleet/src/main.rs1.6 KiBsourcehistory
1pub mod cmds;2pub mod command;3pub mod host;4pub mod keys;56mod fleetdata;78use std::io;910use anyhow::{anyhow, Result};11use clap::Parser;1213use cmds::{build_systems::BuildSystems, info::Info, secrets::Secrets};14use host::{Config, FleetOpts};15use tracing::{info, metadata::LevelFilter};16use tracing_subscriber::EnvFilter;1718#[derive(Parser)]19enum Opts {20	/// Prepare systems for deployments21	BuildSystems(BuildSystems),22	/// Secret management23	#[clap(subcommand)]24	Secrets(Secrets),25	/// Config parsing26	Info(Info),27}2829#[derive(Parser)]30#[clap(version = "1.0", author)]31struct RootOpts {32	#[clap(flatten)]33	fleet_opts: FleetOpts,34	#[clap(subcommand)]35	command: Opts,36}3738async fn run_command(config: &Config, command: Opts) -> Result<()> {39	match command {40		Opts::BuildSystems(c) => c.run(config).await?,41		Opts::Secrets(s) => s.run(config).await?,42		Opts::Info(i) => i.run(config).await?,43	};44	Ok(())45}4647#[tokio::main]48async fn main() -> Result<()> {49	let filter = EnvFilter::from_default_env().add_directive(LevelFilter::INFO.into());50	tracing_subscriber::FmtSubscriber::builder()51		.with_env_filter(filter)52		.without_time()53		.with_target(false)54		.with_writer(|| {55			// eprintln!("Line");56			io::stderr()57		})58		.try_init()59		.map_err(|e| anyhow!("Failed to initialize logger: {}", e))?;6061	info!("Starting");62	let mut os_args = std::env::args_os();63	let opts = RootOpts::parse_from((&mut os_args).take_while(|v| v != "--"));64	let config = opts.fleet_opts.build(os_args.collect()).await?;6566	match run_command(&config, opts.command).await {67		Ok(()) => {68			config.save()?;69			Ok(())70		}71		Err(e) => {72			let _ = config.save();73			Err(e)74		}75	}76}