# HG changeset patch # User Simon Sapin # Date 1644491576 -3600 # Node ID 1aaf11e35aec4035ca110313c8eae77a4f838139 # Parent 99b1dfc06571e24d52cbd7abf7f3e59b5abbe827 rhg: Pass a &Config to Ui::new When a Ui object is needed to print errors about configuration-loading errors, an empty (default) configuration is used. Differential Revision: https://phab.mercurial-scm.org/D12164 diff -r 99b1dfc06571 -r 1aaf11e35aec rust/hg-core/src/config/config.rs --- a/rust/hg-core/src/config/config.rs Thu Feb 10 11:58:04 2022 +0100 +++ b/rust/hg-core/src/config/config.rs Thu Feb 10 12:12:56 2022 +0100 @@ -84,6 +84,11 @@ } impl Config { + /// The configuration to use when printing configuration-loading errors + pub fn empty() -> Self { + Self { layers: Vec::new() } + } + /// Load system and user configuration from various files. /// /// This is also affected by some environment variables. diff -r 99b1dfc06571 -r 1aaf11e35aec rust/rhg/src/main.rs --- a/rust/rhg/src/main.rs Thu Feb 10 11:58:04 2022 +0100 +++ b/rust/rhg/src/main.rs Thu Feb 10 12:12:56 2022 +0100 @@ -137,7 +137,6 @@ let process_start_time = blackbox::ProcessStartTime::now(); env_logger::init(); - let ui = ui::Ui::new(); let early_args = EarlyArgs::parse(std::env::args_os()); @@ -151,7 +150,7 @@ .unwrap_or_else(|error| { exit( &None, - &ui, + &Ui::new(&Config::empty()), OnUnsupported::Abort, Err(CommandError::abort(format!( "abort: {}: '{}'", @@ -172,7 +171,7 @@ exit( &initial_current_dir, - &ui, + &Ui::new(&Config::empty()), on_unsupported, Err(error.into()), false, @@ -184,7 +183,7 @@ .unwrap_or_else(|error| { exit( &initial_current_dir, - &ui, + &Ui::new(&non_repo_config), OnUnsupported::from_config(&non_repo_config), Err(error.into()), non_repo_config @@ -202,7 +201,7 @@ if SCHEME_RE.is_match(&repo_path_bytes) { exit( &initial_current_dir, - &ui, + &Ui::new(&non_repo_config), OnUnsupported::from_config(&non_repo_config), Err(CommandError::UnsupportedFeature { message: format_bytes!( @@ -292,7 +291,7 @@ } Err(error) => exit( &initial_current_dir, - &ui, + &Ui::new(&non_repo_config), OnUnsupported::from_config(&non_repo_config), Err(error.into()), // TODO: show a warning or combine with original error if @@ -308,6 +307,7 @@ } else { &non_repo_config }; + let ui = Ui::new(&config); let on_unsupported = OnUnsupported::from_config(config); let result = main_with_result( diff -r 99b1dfc06571 -r 1aaf11e35aec rust/rhg/src/ui.rs --- a/rust/rhg/src/ui.rs Thu Feb 10 11:58:04 2022 +0100 +++ b/rust/rhg/src/ui.rs Thu Feb 10 12:12:56 2022 +0100 @@ -1,4 +1,5 @@ use format_bytes::format_bytes; +use hg::config::Config; use hg::utils::files::get_bytes_from_os_string; use std::borrow::Cow; use std::env; @@ -21,7 +22,7 @@ /// The commandline user interface impl Ui { - pub fn new() -> Self { + pub fn new(_config: &Config) -> Self { Ui { stdout: std::io::stdout(), stderr: std::io::stderr(),