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 15 #[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 27 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}