diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index 82e5adb8..43f292a9 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -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 { diff --git a/crates/cli/src/modules/cli.rs b/crates/cli/src/modules/cli.rs index c48d1ec8..249cfc99 100644 --- a/crates/cli/src/modules/cli.rs +++ b/crates/cli/src/modules/cli.rs @@ -34,7 +34,7 @@ pub struct Cli { pub command: Commands, /// Server base URL #[clap(short, long)] - pub url: String, + pub url: Option, /// Authentication credentials #[clap(short, long)] pub credentials: Option, diff --git a/tests/resources/scripts/create_test_users.sh b/tests/resources/scripts/create_test_users.sh index 508c4e30..206000b4 100644 --- a/tests/resources/scripts/create_test_users.sh +++ b/tests/resources/scripts/create_test_users.sh @@ -1,16 +1,19 @@ #!/bin/bash -cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret domain create example.org -cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret account create john 12345 -d "John Doe" -a john@example.org -a john.doe@example.org -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret account create jane abcde -d "Jane Doe" -a jane@example.org -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret account create bill xyz12 -d "Bill Foobar" -a bill@example.org -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret group create sales -d "Sales Department" -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret group create support -d "Technical Support" -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret account add-to-group john sales support -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret account remove-from-group john support -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret account add-email jane jane.doe@example.org -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret list create everyone everyone@example.org -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret list add-members everyone jane john bill -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret account list -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret import messages --format mbox john _ignore/dovecot-crlf -#cargo run -p stalwart-cli -- -u https://127.0.0.1:443 -c admin:secret import messages --format maildir john /var/mail/john +URL="https://127.0.0.1:443" +CREDENTIALS="admin:secret" + +cargo run -p stalwart-cli -- domain create example.org +cargo run -p stalwart-cli -- account create john 12345 -d "John Doe" -a john@example.org -a john.doe@example.org +#cargo run -p stalwart-cli -- account create jane abcde -d "Jane Doe" -a jane@example.org +#cargo run -p stalwart-cli -- account create bill xyz12 -d "Bill Foobar" -a bill@example.org +#cargo run -p stalwart-cli -- group create sales -d "Sales Department" +#cargo run -p stalwart-cli -- group create support -d "Technical Support" +#cargo run -p stalwart-cli -- account add-to-group john sales support +#cargo run -p stalwart-cli -- account remove-from-group john support +#cargo run -p stalwart-cli -- account add-email jane jane.doe@example.org +#cargo run -p stalwart-cli -- list create everyone everyone@example.org +#cargo run -p stalwart-cli -- list add-members everyone jane john bill +#cargo run -p stalwart-cli -- account list +#cargo run -p stalwart-cli -- import messages --format mbox john _ignore/dovecot-crlf +#cargo run -p stalwart-cli -- import messages --format maildir john /var/mail/john