diff --git a/nym-api/Cargo.toml b/nym-api/Cargo.toml index 19207fafe5..4e55e76131 100644 --- a/nym-api/Cargo.toml +++ b/nym-api/Cargo.toml @@ -18,7 +18,7 @@ bip39 = { workspace = true } bincode.workspace = true bloomfilter = { workspace = true } cfg-if = { workspace = true } -clap = { workspace = true, features = ["cargo", "derive"] } +clap = { workspace = true, features = ["cargo", "derive", "env"] } console-subscriber = { workspace = true, optional = true } # validator-api needs to be built with RUSTFLAGS="--cfg tokio_unstable" dirs = { workspace = true } futures = { workspace = true } diff --git a/nym-api/src/support/cli/init.rs b/nym-api/src/support/cli/init.rs index a51933f150..71efedbea4 100644 --- a/nym-api/src/support/cli/init.rs +++ b/nym-api/src/support/cli/init.rs @@ -10,27 +10,33 @@ use std::net::SocketAddr; pub(crate) struct Args { /// Id of the nym-api we want to initialise. if unspecified, a default value will be used. /// default: "default" - #[clap(long, default_value = "default")] + #[clap(long, default_value = "default", env = "NYMAPI_ID_ARG")] pub(crate) id: String, /// Specifies whether network monitoring is enabled on this API /// default: false - #[clap(short = 'm', long)] + #[clap(short = 'm', long, env = "NYMAPI_ENABLE_MONITOR_ARG")] pub(crate) enable_monitor: bool, /// Specifies whether network rewarding is enabled on this API /// default: false - #[clap(short = 'r', long, requires = "enable_monitor", requires = "mnemonic")] + #[clap( + short = 'r', + long, + requires = "enable_monitor", + requires = "mnemonic", + env = "NYMAPI_ENABLE_REWARDING_ARG" + )] pub(crate) enable_rewarding: bool, /// Endpoint to nyxd instance used for contract information. /// default: http://localhost:26657 - #[clap(long)] + #[clap(long, env = "NYMAPI_NYXD_VALIDATOR_ARG")] pub(crate) nyxd_validator: Option, /// Mnemonic of the network monitor used for sending rewarding and zk-nyms transactions /// default: None - #[clap(long)] + #[clap(long, env = "NYMAPI_MNEMONIC_ARG")] pub(crate) mnemonic: Option, /// Flag to indicate whether credential signer authority is enabled on this API @@ -39,18 +45,23 @@ pub(crate) struct Args { long, requires = "mnemonic", requires = "announce_address", - alias = "enable_coconut" + alias = "enable_coconut", + env = "NYMAPI_ENABLE_ZK_NYM_ARG" )] pub(crate) enable_zk_nym: bool, /// Announced address that is going to be put in the DKG contract where zk-nym clients will connect /// to obtain their credentials /// default: None - #[clap(long)] + #[clap(long, env = "NYMAPI_ANNOUNCE_ADDRESS_NYM_ARG")] pub(crate) announce_address: Option, /// Set this nym api to work in a enabled credentials that would attempt to use gateway with the bandwidth credential requirement - #[clap(long, requires = "enable_monitor")] + #[clap( + long, + requires = "enable_monitor", + env = "NYMAPI_MONITOR_CREDENTIALS_MODE_ARG" + )] pub(crate) monitor_credentials_mode: bool, /// Socket address this api will use for binding its http API. diff --git a/nym-api/src/support/cli/mod.rs b/nym-api/src/support/cli/mod.rs index 6667adccc6..7ba0b6411f 100644 --- a/nym-api/src/support/cli/mod.rs +++ b/nym-api/src/support/cli/mod.rs @@ -20,11 +20,11 @@ fn pretty_build_info_static() -> &'static str { #[clap(author = "Nymtech", version, long_version = pretty_build_info_static(), about)] pub(crate) struct Cli { /// Path pointing to an env file that configures the Nym API. - #[clap(short, long)] + #[clap(short, long, env = "NYMAPI_CONFIG_ENV_FILE_ARG")] pub(crate) config_env_file: Option, /// A no-op flag included for consistency with other binaries (and compatibility with nymvisor, oops) - #[clap(long)] + #[clap(long, env = "NYMAPI_NO_BANNER_ARG")] pub(crate) no_banner: bool, #[clap(subcommand)] diff --git a/nym-api/src/support/cli/run.rs b/nym-api/src/support/cli/run.rs index cef94c86ce..97faffa387 100644 --- a/nym-api/src/support/cli/run.rs +++ b/nym-api/src/support/cli/run.rs @@ -44,27 +44,33 @@ use tracing::{error, info}; pub(crate) struct Args { /// Id of the nym-api we want to run.if unspecified, a default value will be used. /// default: "default" - #[clap(long, default_value = "default")] + #[clap(long, default_value = "default", env = "NYMAPI_ID_ARG")] pub(crate) id: String, /// Specifies whether network monitoring is enabled on this API /// default: None - config value will be used instead - #[clap(short = 'm', long)] + #[clap(short = 'm', long, env = "NYMAPI_ENABLE_MONITOR_ARG")] pub(crate) enable_monitor: Option, /// Specifies whether network rewarding is enabled on this API /// default: None - config value will be used instead - #[clap(short = 'r', long, requires = "enable_monitor", requires = "mnemonic")] + #[clap( + short = 'r', + long, + requires = "enable_monitor", + requires = "mnemonic", + env = "NYMAPI_ENABLE_REWARDING_ARG" + )] pub(crate) enable_rewarding: Option, /// Endpoint to nyxd instance used for contract information. /// default: None - config value will be used instead - #[clap(long)] + #[clap(long, env = "NYMAPI_NYXD_VALIDATOR_ARG")] pub(crate) nyxd_validator: Option, /// Mnemonic of the network monitor used for sending rewarding and zk-nyms transactions /// default: None - config value will be used instead - #[clap(long)] + #[clap(long, env = "NYMAPI_MNEMONIC_ARG")] pub(crate) mnemonic: Option, /// Flag to indicate whether coconut signer authority is enabled on this API @@ -73,19 +79,20 @@ pub(crate) struct Args { long, requires = "mnemonic", requires = "announce_address", - alias = "enable_coconut" + alias = "enable_coconut", + env = "NYMAPI_ENABLE_ZK_NYM_ARG" )] pub(crate) enable_zk_nym: Option, /// Announced address that is going to be put in the DKG contract where zk-nym clients will connect /// to obtain their credentials /// default: None - config value will be used instead - #[clap(long)] + #[clap(long, env = "NYMAPI_ANNOUNCE_ADDRESS_ARG")] pub(crate) announce_address: Option, /// Set this nym api to work in a enabled credentials that would attempt to use gateway with the bandwidth credential requirement /// default: None - config value will be used instead - #[clap(long)] + #[clap(long, env = "NYMAPI_MONITOR_CREDENTIALS_MODE_ARG")] pub(crate) monitor_credentials_mode: Option, /// Socket address this api will use for binding its http API.