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

difftreelog

source

src/cmds/generate_secrets.rs1.0 KiBsourcehistory
1use std::collections::HashSet;23use anyhow::Result;4use clap::Clap;5use log::info;67use crate::db::{8	secret::{list_secrets, SecretDb},9	Db, DbData,10};1112#[derive(Clap)]13pub struct GenerateSecrets {14	/// If set - remove orphaned secrets15	#[clap(long)]16	cleanup: bool,17}1819impl GenerateSecrets {20	pub fn run(self) -> Result<()> {21		let db = Db::new(".fleet")?;22		let mut secrets = SecretDb::open(&db)?;2324		let defined_secrets = list_secrets()?;25		for (secret, data) in defined_secrets.iter() {26			// let keys = KeyDb::open(&db)?;27			// secrets.ensure_generated(&keys, &secret, &data)?;28		}29		let key_names = defined_secrets30			.keys()31			.filter(|s| !secrets.has_secret(s))32			.cloned()33			.collect::<HashSet<_>>();34		if !key_names.is_empty() {35			if self.cleanup {36				info!("Removed orphan secrets:");37			} else {38				info!("Orphan secrets found, run with --cleanup to remove them from db:");39			}40			for key in key_names {41				info!("- {}", key);42				if self.cleanup {43					secrets.remove_secret(&key)44				}45			}46		}4748		Ok(())49	}50}