Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature: standarise arguments #2762

Merged
merged 9 commits into from
Jan 4, 2023
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Post 1.0.0 release, the changelog format is based on [Keep a Changelog](https://
- all-binaries: improved error logging ([#2686])
- native client: bring shutdown logic up to the same level as socks5-client
- nym-api, coconut-dkg contract: automatic, time-based dkg epoch state advancement ([#2670])
- all-binaries: standarised argument names (note: old names should still be accepted) ([#2762]

### Fixed

Expand All @@ -21,6 +22,7 @@ Post 1.0.0 release, the changelog format is based on [Keep a Changelog](https://
[#2686]: https://github.com/nymtech/nym/pull/2686
[#2670]: https://github.com/nymtech/nym/pull/2670
[#2753]: https://github.com/nymtech/nym/pull/2753
[#2762]: https://github.com/nymtech/nym/pull/2762

## [v1.1.4] (2022-12-20)

Expand Down
11 changes: 7 additions & 4 deletions clients/native/src/commands/init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,13 @@ pub(crate) struct Init {

/// Comma separated list of rest endpoints of the nymd validators
#[clap(long)]
#[cfg(feature = "coconut")]
nymd_validators: Option<String>,

/// Comma separated list of rest endpoints of the API validators
#[clap(long)]
api_validators: Option<String>,
#[clap(long, alias = "api_validators")]
// the alias here is included for backwards compatibility (1.1.4 and before)
nym_apis: Option<String>,

/// Whether to not start the websocket
#[clap(long)]
Expand Down Expand Up @@ -67,13 +69,14 @@ pub(crate) struct Init {
impl From<Init> for OverrideConfig {
fn from(init_config: Init) -> Self {
OverrideConfig {
nymd_validators: init_config.nymd_validators,
api_validators: init_config.api_validators,
nym_apis: init_config.nym_apis,
disable_socket: init_config.disable_socket,
port: init_config.port,
fastmode: init_config.fastmode,
no_cover: init_config.no_cover,

#[cfg(feature = "coconut")]
nymd_validators: init_config.nymd_validators,
#[cfg(feature = "coconut")]
enabled_credentials_mode: init_config.enabled_credentials_mode,
}
Expand Down
33 changes: 17 additions & 16 deletions clients/native/src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,14 @@ pub(crate) enum Commands {

// Configuration that can be overridden.
pub(crate) struct OverrideConfig {
nymd_validators: Option<String>,
api_validators: Option<String>,
nym_apis: Option<String>,
disable_socket: bool,
port: Option<u16>,
fastmode: bool,
no_cover: bool,

#[cfg(feature = "coconut")]
nymd_validators: Option<String>,
#[cfg(feature = "coconut")]
enabled_credentials_mode: bool,
}
Expand All @@ -101,27 +102,16 @@ pub(crate) async fn execute(args: &Cli) -> Result<(), Box<dyn Error + Send + Syn
}

pub(crate) fn override_config(mut config: Config, args: OverrideConfig) -> Config {
if let Some(raw_validators) = args.nymd_validators {
config
.get_base_mut()
.set_custom_validators(config::parse_validators(&raw_validators));
} else if std::env::var(network_defaults::var_names::CONFIGURED).is_ok() {
let raw_validators = std::env::var(network_defaults::var_names::NYMD_VALIDATOR)
.expect("nymd validator not set");
if let Some(raw_validators) = args.nym_apis {
config
.get_base_mut()
.set_custom_validators(config::parse_validators(&raw_validators));
}
if let Some(raw_validators) = args.api_validators {
config
.get_base_mut()
.set_custom_nym_apis(config::parse_validators(&raw_validators));
.set_custom_nym_apis(config::parse_urls(&raw_validators));
} else if std::env::var(network_defaults::var_names::CONFIGURED).is_ok() {
let raw_validators = std::env::var(network_defaults::var_names::API_VALIDATOR)
.expect("api validator not set");
config
.get_base_mut()
.set_custom_nym_apis(config::parse_validators(&raw_validators));
.set_custom_nym_apis(config::parse_urls(&raw_validators));
}

if args.disable_socket {
Expand All @@ -134,6 +124,17 @@ pub(crate) fn override_config(mut config: Config, args: OverrideConfig) -> Confi

#[cfg(feature = "coconut")]
{
if let Some(raw_validators) = args.nymd_validators {
config
.get_base_mut()
.set_custom_validators(config::parse_urls(&raw_validators));
} else if std::env::var(network_defaults::var_names::CONFIGURED).is_ok() {
let raw_validators = std::env::var(network_defaults::var_names::NYMD_VALIDATOR)
.expect("nymd validator not set");
config
.get_base_mut()
.set_custom_validators(config::parse_urls(&raw_validators));
}
if args.enabled_credentials_mode {
config.get_base_mut().with_disabled_credentials(false)
}
Expand Down
14 changes: 9 additions & 5 deletions clients/native/src/commands/run.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2021 - Nym Technologies SA <contact@nymtech.net>
// Copyright 2021-2023 - Nym Technologies SA <contact@nymtech.net>
// SPDX-License-Identifier: Apache-2.0

use std::error::Error;
Expand All @@ -22,11 +22,13 @@ pub(crate) struct Run {

/// Comma separated list of rest endpoints of the nymd validators
#[clap(long)]
#[cfg(feature = "coconut")]
nymd_validators: Option<String>,

/// Comma separated list of rest endpoints of the API validators
#[clap(long)]
api_validators: Option<String>,
#[clap(long, alias = "api_validators")]
// the alias here is included for backwards compatibility (1.1.4 and before)
nym_apis: Option<String>,

/// Id of the gateway we want to connect to. If overridden, it is user's responsibility to
/// ensure prior registration happened
Expand Down Expand Up @@ -60,12 +62,14 @@ pub(crate) struct Run {
impl From<Run> for OverrideConfig {
fn from(run_config: Run) -> Self {
OverrideConfig {
nymd_validators: run_config.nymd_validators,
api_validators: run_config.api_validators,
nym_apis: run_config.nym_apis,
disable_socket: run_config.disable_socket,
port: run_config.port,
fastmode: run_config.fastmode,
no_cover: run_config.no_cover,

#[cfg(feature = "coconut")]
nymd_validators: run_config.nymd_validators,
#[cfg(feature = "coconut")]
enabled_credentials_mode: run_config.enabled_credentials_mode,
}
Expand Down
19 changes: 12 additions & 7 deletions clients/socks5/src/commands/init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ pub(crate) struct Init {
/// slower and consume nearly double the bandwidth as it will require sending reply SURBs.
///
/// Note that some service providers might not support this.
#[clap(long)]
use_anonymous_sender_tag: bool,
// the alias here is included for backwards compatibility (1.1.4 and before)
#[clap(long, alias = "use_anonymous_sender_tag")]
use_reply_surbs: bool,

/// Id of the gateway we are going to connect to.
#[clap(long)]
Expand All @@ -41,12 +42,14 @@ pub(crate) struct Init {
force_register_gateway: bool,

/// Comma separated list of rest endpoints of the nymd validators
#[cfg(feature = "coconut")]
#[clap(long)]
nymd_validators: Option<String>,

/// Comma separated list of rest endpoints of the API validators
#[clap(long)]
api_validators: Option<String>,
#[clap(long, alias = "api_validators")]
// the alias here is included for backwards compatibility (1.1.4 and before)
nym_apis: Option<String>,

/// Port for the socket to listen on in all subsequent runs
#[clap(short, long)]
Expand Down Expand Up @@ -75,12 +78,14 @@ pub(crate) struct Init {
impl From<Init> for OverrideConfig {
fn from(init_config: Init) -> Self {
OverrideConfig {
nymd_validators: init_config.nymd_validators,
api_validators: init_config.api_validators,
nym_apis: init_config.nym_apis,
port: init_config.port,
use_anonymous_sender_tag: init_config.use_anonymous_sender_tag,
use_anonymous_replies: init_config.use_reply_surbs,
fastmode: init_config.fastmode,
no_cover: init_config.no_cover,

#[cfg(feature = "coconut")]
nymd_validators: init_config.nymd_validators,
#[cfg(feature = "coconut")]
enabled_credentials_mode: init_config.enabled_credentials_mode,
}
Expand Down
37 changes: 20 additions & 17 deletions clients/socks5/src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use crate::client::config::Config;
use clap::CommandFactory;
use clap::{Parser, Subcommand};
use completions::{fig_generate, ArgShell};
use config::parse_validators;
use config::parse_urls;

pub mod init;
pub(crate) mod run;
Expand Down Expand Up @@ -79,13 +79,14 @@ pub(crate) enum Commands {

// Configuration that can be overridden.
pub(crate) struct OverrideConfig {
nymd_validators: Option<String>,
api_validators: Option<String>,
nym_apis: Option<String>,
port: Option<u16>,
use_anonymous_sender_tag: bool,
use_anonymous_replies: bool,
fastmode: bool,
no_cover: bool,

#[cfg(feature = "coconut")]
nymd_validators: Option<String>,
#[cfg(feature = "coconut")]
enabled_credentials_mode: bool,
}
Expand All @@ -104,26 +105,17 @@ pub(crate) async fn execute(args: &Cli) -> Result<(), Box<dyn Error + Send + Syn
}

pub(crate) fn override_config(mut config: Config, args: OverrideConfig) -> Config {
if let Some(raw_validators) = args.nymd_validators {
config
.get_base_mut()
.set_custom_validators(parse_validators(&raw_validators));
} else if let Ok(raw_validators) = std::env::var(network_defaults::var_names::NYMD_VALIDATOR) {
if let Some(raw_validators) = args.nym_apis {
config
.get_base_mut()
.set_custom_validators(parse_validators(&raw_validators));
}
if let Some(raw_validators) = args.api_validators {
config
.get_base_mut()
.set_custom_nym_apis(parse_validators(&raw_validators));
.set_custom_nym_apis(parse_urls(&raw_validators));
} else if let Ok(raw_validators) = std::env::var(network_defaults::var_names::API_VALIDATOR) {
config
.get_base_mut()
.set_custom_nym_apis(parse_validators(&raw_validators));
.set_custom_nym_apis(parse_urls(&raw_validators));
}

if args.use_anonymous_sender_tag {
if args.use_anonymous_replies {
config = config.with_anonymous_replies(true)
}

Expand All @@ -133,6 +125,17 @@ pub(crate) fn override_config(mut config: Config, args: OverrideConfig) -> Confi

#[cfg(feature = "coconut")]
{
if let Some(raw_validators) = args.nymd_validators {
config
.get_base_mut()
.set_custom_validators(parse_urls(&raw_validators));
} else if let Ok(raw_validators) =
std::env::var(network_defaults::var_names::NYMD_VALIDATOR)
{
config
.get_base_mut()
.set_custom_validators(parse_urls(&raw_validators));
}
if args.enabled_credentials_mode {
config.get_base_mut().with_disabled_credentials(false)
}
Expand Down
14 changes: 9 additions & 5 deletions clients/socks5/src/commands/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@ pub(crate) struct Run {
/// slower and consume nearly double the bandwidth as it will require sending reply SURBs.
///
/// Note that some service providers might not support this.
#[clap(long)]
use_anonymous_sender_tag: bool,
// the alias here is included for backwards compatibility (1.1.4 and before)
#[clap(long, alias = "use_anonymous_sender_tag")]
use_anonymous_replies: bool,

/// Address of the socks5 provider to send messages to.
#[clap(long)]
Expand All @@ -40,6 +41,7 @@ pub(crate) struct Run {
gateway: Option<String>,

/// Comma separated list of rest endpoints of the nymd validators
#[cfg(feature = "coconut")]
#[clap(long)]
nymd_validators: Option<String>,

Expand Down Expand Up @@ -70,12 +72,14 @@ pub(crate) struct Run {
impl From<Run> for OverrideConfig {
fn from(run_config: Run) -> Self {
OverrideConfig {
nymd_validators: run_config.nymd_validators,
api_validators: run_config.nym_apis,
nym_apis: run_config.nym_apis,
port: run_config.port,
use_anonymous_sender_tag: run_config.use_anonymous_sender_tag,
use_anonymous_replies: run_config.use_anonymous_replies,
fastmode: run_config.fastmode,
no_cover: run_config.no_cover,

#[cfg(feature = "coconut")]
nymd_validators: run_config.nymd_validators,
#[cfg(feature = "coconut")]
enabled_credentials_mode: run_config.enabled_credentials_mode,
}
Expand Down
8 changes: 4 additions & 4 deletions common/config/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,13 +118,13 @@ pub trait NymConfig: Default + Serialize + DeserializeOwned {
}
}

pub fn parse_validators(raw: &str) -> Vec<url::Url> {
pub fn parse_urls(raw: &str) -> Vec<url::Url> {
raw.split(',')
.map(|raw_validator| {
raw_validator
.map(|raw_url| {
raw_url
.trim()
.parse()
.expect("one of the provided validator api urls is invalid")
.expect("one of the provided nym api urls is invalid")
})
.collect()
}
20 changes: 12 additions & 8 deletions gateway/src/commands/init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,15 @@ pub struct Init {
datastore: Option<String>,

/// Comma separated list of endpoints of nym APIs
#[clap(long)]
#[clap(long, alias = "validator_apis")]
// the alias here is included for backwards compatibility (1.1.4 and before)
nym_apis: Option<String>,

/// Comma separated list of endpoints of the validator
#[clap(long)]
validators: Option<String>,
#[cfg(feature = "coconut")]
#[clap(long, alias = "validators")]
// the alias here is included for backwards compatibility (1.1.4 and before)
nymd_validators: Option<String>,

/// Cosmos wallet mnemonic needed for double spending protection
#[clap(long)]
Expand Down Expand Up @@ -76,14 +79,15 @@ impl From<Init> for OverrideConfig {
datastore: init_config.datastore,
announce_host: init_config.announce_host,
nym_apis: init_config.nym_apis,
validators: init_config.validators,
mnemonic: init_config.mnemonic,

#[cfg(feature = "coconut")]
only_coconut_credentials: init_config.only_coconut_credentials,

enabled_statistics: init_config.enabled_statistics,
statistics_service_url: init_config.statistics_service_url,

#[cfg(feature = "coconut")]
nymd_validators: init_config.nymd_validators,
#[cfg(feature = "coconut")]
only_coconut_credentials: init_config.only_coconut_credentials,
}
}
}
Expand Down Expand Up @@ -166,7 +170,7 @@ mod tests {
announce_host: Some("foo-announce-host".to_string()),
datastore: Some("foo-datastore".to_string()),
nym_apis: None,
validators: None,
nymd_validators: None,
mnemonic: None,
statistics_service_url: None,
enabled_statistics: None,
Expand Down
Loading