Browse Source

Fixing config values not being preferred over defaults.

develop
Drew Short 6 years ago
parent
commit
da1a8e9e58
  1. 5
      src/args/mod.rs
  2. 4
      src/args/parse.rs

5
src/args/mod.rs

@ -1,9 +1,9 @@
use clap::{App, Arg}; use clap::{App, Arg};
use crate::VERSION;
use crate::DEFAULT_HOST; use crate::DEFAULT_HOST;
use crate::DEFAULT_PORT_STR; use crate::DEFAULT_PORT_STR;
use crate::DEFAULT_WORKERS_STR; use crate::DEFAULT_WORKERS_STR;
use crate::VERSION;
pub mod parse; pub mod parse;
@ -24,21 +24,18 @@ pub fn get_app() -> App<'static, 'static> {
.short("h") .short("h")
.long("host") .long("host")
.value_name("HOST") .value_name("HOST")
.default_value(&DEFAULT_HOST)
.help("The address the server listens on.") .help("The address the server listens on.")
.takes_value(true), .takes_value(true),
Arg::with_name("port") Arg::with_name("port")
.short("p") .short("p")
.long("port") .long("port")
.value_name("PORT") .value_name("PORT")
.default_value(&DEFAULT_PORT_STR)
.help("The port to run the server on.") .help("The port to run the server on.")
.takes_value(true), .takes_value(true),
Arg::with_name("workers") Arg::with_name("workers")
.short("w") .short("w")
.long("workers") .long("workers")
.value_name("NUMBER") .value_name("NUMBER")
.default_value(&DEFAULT_WORKERS_STR)
.help("The number of workers to serve requests with (Defaults to the number of cores on the system).") .help("The number of workers to serve requests with (Defaults to the number of cores on the system).")
.takes_value(true), .takes_value(true),
]) ])

4
src/args/parse.rs

@ -5,6 +5,7 @@ use clap::ArgMatches;
use crate::config::model::Config; use crate::config::model::Config;
fn get_config_for_string(arg_value: Option<&str>, config_value: &Option<String>, default_value: &str) -> String { fn get_config_for_string(arg_value: Option<&str>, config_value: &Option<String>, default_value: &str) -> String {
debug!("arg: {:?}; config: {:?}; default: {}", arg_value, config_value, default_value);
String::from(match arg_value { String::from(match arg_value {
Some(v) => v, Some(v) => v,
None => match config_value { None => match config_value {
@ -14,7 +15,8 @@ fn get_config_for_string(arg_value: Option<&str>, config_value: &Option<String>,
}) })
} }
fn get_config_for_number<T: FromStr>(arg_value: Option<&str>, config_value: Option<T>, default_value: T) -> T {
fn get_config_for_number<T: FromStr + std::fmt::Debug>(arg_value: Option<&str>, config_value: Option<T>, default_value: T) -> T {
debug!("arg: {:?}; config: {:?}; default: {:?}", arg_value, config_value, default_value);
match arg_value { match arg_value {
Some(v) => v.parse::<T>().unwrap_or(default_value), Some(v) => v.parse::<T>().unwrap_or(default_value),
None => match config_value { None => match config_value {

Loading…
Cancel
Save