diff --git a/src/cli.rs b/src/cli.rs index 0fca674..c38b137 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -40,10 +40,7 @@ use clap::{Parser, Subcommand}; use mostro_core::prelude::*; use nostr_sdk::prelude::*; use sqlx::SqlitePool; -use std::{ - env::{set_var, var}, - str::FromStr, -}; +use std::{env::set_var, str::FromStr}; use take_dispute::*; use uuid::Uuid; @@ -315,7 +312,6 @@ fn get_env_var(cli: &Cli) { if let Some(ref mostro_pubkey) = cli.mostropubkey { set_var("MOSTRO_PUBKEY", mostro_pubkey.clone()); } - let _pubkey = var("MOSTRO_PUBKEY").expect("$MOSTRO_PUBKEY env var needs to be set"); if let Some(ref relays) = cli.relays { set_var("RELAYS", relays.clone()); @@ -374,6 +370,20 @@ pub async fn run() -> Result<()> { Ok(()) } +fn resolve_mostro_pubkey(cli: &Cli) -> Result { + cli.mostropubkey + .clone() + .or_else(|| std::env::var("MOSTRO_PUBKEY").ok()) + .ok_or_else(|| { + anyhow::anyhow!( + "MOSTRO_PUBKEY not set.\n\ + Provide it using one of the following methods:\n\ + 1) --mostropubkey \n\ + 2) export MOSTRO_PUBKEY=" + ) + }) +} + async fn init_context(cli: &Cli) -> Result { // Get environment variables get_env_var(cli); @@ -407,10 +417,8 @@ async fn init_context(cli: &Cli) -> Result { }; // Resolve Mostro pubkey from env (required for all flows) - let mostro_pubkey = PublicKey::from_str( - &std::env::var("MOSTRO_PUBKEY") - .map_err(|e| anyhow::anyhow!("Failed to get MOSTRO_PUBKEY: {}", e))?, - )?; + + let mostro_pubkey = PublicKey::from_str(&resolve_mostro_pubkey(cli)?)?; // Connect to Nostr relays let client = util::connect_nostr().await?;