From ba0548febc131af2bcb36d3b2ee9c1dcf11ccc76 Mon Sep 17 00:00:00 2001
From: Bart van der Braak <bartvdbraak@gmail.com>
Date: Sun, 12 Nov 2023 22:48:12 +0100
Subject: [PATCH] feat: add paris for pretty logging

---
 Cargo.lock  |  7 +++++++
 Cargo.toml  |  1 +
 src/main.rs | 14 +++++++++++---
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 9ccfcda..0ba35ef 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -860,6 +860,7 @@ dependencies = [
  "clap",
  "futures",
  "openssl",
+ "paris",
  "tokio",
 ]
 
@@ -1063,6 +1064,12 @@ dependencies = [
  "vcpkg",
 ]
 
+[[package]]
+name = "paris"
+version = "1.5.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fecab3723493c7851f292cb060f3ee1c42f19b8d749345d0d7eaf3fd19aa62d"
+
 [[package]]
 name = "parking"
 version = "2.2.0"
diff --git a/Cargo.toml b/Cargo.toml
index b620648..567b504 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -15,6 +15,7 @@ azure_identity = "0.17.0"
 azure_security_keyvault = "0.17.0"
 clap = { version = "4.4.8", features = ["derive"] }
 futures = "0.3.29"
+paris = { version = "1.5.15", features = ["macros"] }
 tokio = {version = "1.34.0", features = ["full"]}
 
 [target.'cfg(all(target_os = "linux", any(target_env = "musl", target_arch = "arm", target_arch = "aarch64")))'.dependencies]
diff --git a/src/main.rs b/src/main.rs
index 55c3a1d..8a8494a 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -9,6 +9,8 @@ use std::io::Write;
 use std::sync::Arc;
 use tokio::sync::mpsc;
 use tokio::sync::Semaphore;
+use paris::Logger;
+// use paris::error;
 
 #[derive(Parser, Debug)]
 #[clap(author, version, about, long_about = None)]
@@ -147,18 +149,24 @@ mod tests {
 #[tokio::main]
 async fn main() -> Result<()> {
     let opts: Opts = Opts::parse();
+    let mut log = Logger::new();
 
     let vault_url = format!("https://{}.vault.azure.net", opts.vault_name);
-    println!("Fetching secrets from Key Vault: {}", opts.vault_name);
 
+    log.loading("Detecting credentials.");
     let credential = DefaultAzureCredential::default();
     let client = KeyvaultClient::new(&vault_url, std::sync::Arc::new(credential))
         .context("Failed to create KeyvaultClient")?;
+    log.success("Detected credentials.");
 
+    log.loading(format!("Fetching secrets from Key Vault: <blue>{}</>", opts.vault_name));
     let secrets = fetch_secrets_from_key_vault(&client, opts.filter.as_deref()).await?;
-    println!("Creating output file: {}", opts.output);
+    log.success(format!("Fetched secrets from Key Vault: <blue>{}</>", opts.vault_name));
+    
+    log.loading(format!("Creating output file: <blue>{}</>", opts.output));
     create_env_file(secrets, &opts.output)?;
+    log.success(format!("Created output file: <blue>{}</>", opts.output));
 
-    println!("Process completed successfully!");
+    log.success("Done.");
     Ok(())
 }