URL and credentials from env for stalwart-cli (closes #88)

This commit is contained in:
mdecimus
2024-01-09 18:23:12 +01:00
parent 5c1a0f7d2f
commit b7c03445e4
3 changed files with 29 additions and 17 deletions

View File

@@ -44,9 +44,18 @@ pub mod modules;
#[tokio::main]
async fn main() -> std::io::Result<()> {
let args = Cli::parse();
let url = args
.url
.or_else(|| std::env::var("URL").ok())
.unwrap_or_else(|| {
eprintln!("No URL specified. Use --url or set the URL environment variable.");
std::process::exit(1);
});
let client = Client {
credentials: if let Some(credentials) = args.credentials {
parse_credentials(&credentials)
} else if let Ok(credentials) = std::env::var("CREDENTIALS") {
parse_credentials(&credentials)
} else {
let credentials = rpassword::prompt_password(
"\nEnter administrator credentials or press [ENTER] to use OAuth: ",
@@ -55,11 +64,11 @@ async fn main() -> std::io::Result<()> {
if !credentials.is_empty() {
parse_credentials(&credentials)
} else {
oauth(&args.url).await
oauth(&url).await
}
},
timeout: args.timeout,
url: args.url,
url,
};
match args.command {

View File

@@ -34,7 +34,7 @@ pub struct Cli {
pub command: Commands,
/// Server base URL
#[clap(short, long)]
pub url: String,
pub url: Option<String>,
/// Authentication credentials
#[clap(short, long)]
pub credentials: Option<String>,