Merge #601: lianad: print a more helpful error message on startup failure

d4da2bf6b451de0cd44630c077b83426ed581940 daemon bin: try to detect '--help' or '-h' (Antoine Poinsot)
01ce0f179d8ef059f04e56e8f7c125264e9949b1 daemon bin: more helpful error message on config file parsing error (Antoine Poinsot)
222c8bba810cb20eeb60270e89857ab09324884d daemon bin: a more helpful error message on unknown arguments. (Antoine Poinsot)

Pull request description:

  Specifically, link to a sample configuration file. How are users supposed to know how to write the config file otherwise?

  Fixes #559.

ACKs for top commit:
  darosior:
    self-ACK d4da2bf6b451de0cd44630c077b83426ed581940 -- trivial.

Tree-SHA512: 7ca05aa0e351c390b67051ad36c2e767b019cf6339d8207e1fdbd1ead47a3d79ab6cd9584c412d98ae876aa7e8ea906885c52261565917a7cd1126798806b5d2
This commit is contained in:
Antoine Poinsot 2023-08-14 10:03:46 +02:00
commit 0591243abe
No known key found for this signature in database
GPG Key ID: E13FC145CD3F4304

View File

@ -7,15 +7,23 @@ use std::{
use liana::{config::Config, DaemonHandle};
fn print_help_exit() {
eprintln!("A TOML configuration file is required to run lianad. By default lianad looks for a 'config.toml' file in its data directory. A different one may be provided like so: '--conf <config file path>'.");
eprintln!("A documented sample is available at 'contrib/lianad_config_example.toml' in the source tree (https://github.com/wizardsardine/liana/blob/v1.0/contrib/lianad_config_example.toml).");
eprintln!("The default data directory path is a 'liana/' folder in the XDG standard configuration directory for all OSes but Linux ones, where it's '~/.liana/'.");
process::exit(1);
}
fn parse_args(args: Vec<String>) -> Option<PathBuf> {
if args.len() == 1 {
return None;
}
if args.len() != 3 {
eprintln!("Unknown arguments '{:?}'.", args);
eprintln!("Only '--conf <configuration file path>' is supported.");
process::exit(1);
let is_help = args
.iter()
.any(|arg| arg.contains("help") || arg.contains("-h"));
if args.len() != 3 || is_help {
print_help_exit();
}
Some(PathBuf::from(args[2].to_owned()))
@ -52,7 +60,8 @@ fn main() {
let config = Config::from_file(conf_file).unwrap_or_else(|e| {
eprintln!("Error parsing config: {}", e);
process::exit(1);
print_help_exit();
unreachable!();
});
setup_logger(config.log_level).unwrap_or_else(|e| {
eprintln!("Error setting up logger: {}", e);