fix: value is required for `page-fallback` when using empty values (#219)
error: a value is required for '--page-fallback <PAGE_FALLBACK>' but none was supplied
now is ok to pass an empty --page-fallback argument or empty SERVER_FALLBACK_PAGE
log example when --page-fallback or its env is empty:
2023-06-08T20:34:13.806318Z INFO static_web_server::logger: logging level: trace
2023-06-08T20:34:13.806540Z DEBUG static_web_server::server: initializing tokio runtime with multi thread scheduler self.worker_threads=8
2023-06-08T20:34:13.808290Z TRACE static_web_server::server: starting web server
2023-06-08T20:34:13.808557Z INFO static_web_server::server: server bound to tcp socket [::]:8787
2023-06-08T20:34:13.808795Z INFO static_web_server::server: fallback page: enabled=false, value=""
Diff
src/server.rs | 13 ++++++++++++-
src/settings/cli.rs | 10 +++++++---
src/settings/mod.rs | 2 +-
3 files changed, 20 insertions(+), 5 deletions(-)
@@ -154,7 +154,18 @@ impl Server {
let page50x = helpers::read_bytes_default(&general.page50x);
let page_fallback = helpers::read_bytes_default(&general.page_fallback.unwrap_or_default());
let page_fallback_pbuf = general.page_fallback;
let page_fallback = helpers::read_bytes_default(&page_fallback_pbuf);
let page_fallback_enabled = !page_fallback.is_empty();
let mut page_fallback_opt = "";
if page_fallback_enabled {
page_fallback_opt = page_fallback_pbuf.to_str().unwrap()
}
tracing::info!(
"fallback page: enabled={}, value=\"{}\"",
page_fallback_enabled,
page_fallback_opt
);
let threads = self.worker_threads;
@@ -8,7 +8,7 @@
use clap::Parser;
use std::path::PathBuf;
use crate::directory_listing::DirListFmt;
use crate::{directory_listing::DirListFmt, Result};
#[derive(Parser, Debug)]
@@ -102,9 +102,9 @@ pub struct General {
pub page404: PathBuf,
#[arg(long, env = "SERVER_FALLBACK_PAGE")]
#[arg(long, default_value = "", value_parser = value_parser_pathbuf, env = "SERVER_FALLBACK_PAGE")]
pub page_fallback: Option<PathBuf>,
pub page_fallback: PathBuf,
#[arg(long, short = 'g', default_value = "error", env = "SERVER_LOG_LEVEL")]
@@ -392,3 +392,7 @@ pub enum Commands {
#[command(name = "uninstall")]
Uninstall {},
}
fn value_parser_pathbuf(s: &str) -> Result<PathBuf, String> {
Ok(PathBuf::from(s))
}
@@ -239,7 +239,7 @@ impl Settings {
grace_period = v
}
if let Some(v) = general.page_fallback {
page_fallback = Some(v)
page_fallback = v
}
if let Some(v) = general.log_remote_address {
log_remote_address = v