diff options
Diffstat (limited to 'tester/src/generate.rs')
-rw-r--r-- | tester/src/generate.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tester/src/generate.rs b/tester/src/generate.rs new file mode 100644 index 0000000..b75a325 --- /dev/null +++ b/tester/src/generate.rs @@ -0,0 +1,37 @@ +use std::{fs::File, path::Path, io::Write}; + +use anyhow::Result; + +use indicatif::{ProgressBar, ProgressStyle}; +use openpgp::{cert::CertBuilder, serialize::Serialize}; + +pub fn do_generate(count: u64, output_path: &Path, fprs_path: Option<&Path>) -> Result<()> { + let progress_bar = ProgressBar::new(count); + progress_bar.set_style( + ProgressStyle::default_bar() + .template("[{elapsed_precise}] {bar:40.cyan/blue} {pos}/{len} {msg}") + .progress_chars("##-"), + ); + progress_bar.set_draw_delta(count / 100); + + let mut output = File::create(output_path)?; + let mut output_fprs = if let Some(p) = fprs_path { + Some(File::create(p)?) + } else { + None + }; + for i in 0..count { + let (cert, _) = + CertBuilder::general_purpose(None, Some(format!("{:07}@hagrid.invalid", i))) + .generate()?; + cert.serialize(&mut output)?; + if let Some(ref mut output_fprs) = output_fprs { + writeln!(output_fprs, "{}", cert)?; + } + + progress_bar.inc(1); + } + progress_bar.finish(); + + Ok(()) +} |