aboutsummaryrefslogtreecommitdiffstats
path: root/src/config/cli.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/cli.rs')
-rw-r--r--src/config/cli.rs113
1 files changed, 0 insertions, 113 deletions
diff --git a/src/config/cli.rs b/src/config/cli.rs
deleted file mode 100644
index be1b913..0000000
--- a/src/config/cli.rs
+++ /dev/null
@@ -1,113 +0,0 @@
-use std::path::PathBuf;
-
-use clap::Parser;
-#[cfg(feature = "oauth-discord")]
-use secrecy::SecretString;
-use serde::Deserialize;
-use url::Url;
-
-use crate::config::{logging::LogLevel, port::port_in_range};
-
-#[derive(Parser, Debug)]
-#[command(version, about, long_about = None, name = env!("CARGO_PKG_NAME"))]
-pub struct Cli {
- /// Sets the port the server listens on
- #[arg(short, long, default_value = "2210", env = "PORT", value_parser = port_in_range)]
- pub port: Option<u16>,
-
- /// Server's domain
- #[arg(short, long, default_value = "localhost", env = "DOMAIN")]
- pub domain: Option<String>,
-
- /// Sets a custom config file
- #[arg(short, long, value_name = "FILE")]
- pub config: Option<PathBuf>,
-
- /// Sets the application log level
- #[arg(short, long, value_enum, env = "LOG_LEVEL", default_value = "debug")]
- pub log_level: Option<LogLevel>,
-
- /// Request timeout duration (in seconds)
- #[arg(short, long, env = "TIMEOUT_SECONDS", default_value = "10")]
- pub timeout_duration: Option<u64>,
-
- /// Users database connection string
- #[arg(
- long,
- env = "USERS_DATABASE_URL",
- default_value = "postgres://postgres:password@localhost:5432/sellershut"
- )]
- pub db: Option<Url>,
-
- /// Server's system name
- #[arg(short, long, default_value = "sellershut", env = "SYSTEM_NAME")]
- pub system_name: Option<String>,
-
- /// Server's system name
- #[arg(short, long, default_value = "prod", env = "SYSTEM_NAME")]
- pub environment: Option<String>,
-
- /// Oauth optionas
- #[command(flatten)]
- #[cfg(feature = "oauth")]
- pub oauth: OAuth,
-}
-
-#[derive(Debug, Clone, Parser, Deserialize)]
-pub struct OAuth {
- #[cfg(feature = "oauth-discord")]
- #[command(flatten)]
- discord: DiscordOauth,
- #[arg(long, env = "OAUTH_REDIRECT_URL")]
- oauth_redirect_url: Option<Url>,
-}
-
-#[cfg(feature = "oauth-discord")]
-#[derive(Debug, Clone, Parser, Deserialize, Default)]
-pub struct DiscordOauth {
- #[arg(long, env = "OAUTH_DISCORD_CLIENT_ID")]
- discord_client_id: Option<String>,
- #[arg(long, env = "OAUTH_DISCORD_CLIENT_SECRET")]
- discord_client_secret: Option<SecretString>,
- #[arg(
- long,
- env = "OAUTH_DISCORD_TOKEN_URL",
- default_value = "https://discord.com/api/oauth2/token"
- )]
- discord_token_url: Option<Url>,
- #[arg(
- long,
- env = "OAUTH_DISCORD_AUTH_URL",
- default_value = "https://discord.com/api/oauth2/authorize?response_type=code"
- )]
- discord_auth_url: Option<Url>,
-}
-
-#[cfg(test)]
-impl Default for Cli {
- fn default() -> Self {
- let url = Url::parse("postgres://postgres:password@localhost:5432/sellershut").ok();
- Self {
- port: Default::default(),
- config: Default::default(),
- log_level: Default::default(),
- timeout_duration: Some(10),
- domain: Default::default(),
- system_name: Default::default(),
- environment: Default::default(),
- oauth: None,
- db: url,
- }
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn verify_cli() {
- use clap::CommandFactory;
- Cli::command().debug_assert();
- }
-}