[Updated] [+- ] D12164: rhg: Pass a &Config to Ui::new

SimonSapin phabricator at mercurial-scm.org
Fri Feb 11 11:43:13 UTC 2022


SimonSapin updated this revision to Diff 32143.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D12164?vs=32123&id=32143

BRANCH
  default

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D12164/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D12164

AFFECTED FILES
  rust/hg-core/src/config/config.rs
  rust/rhg/src/main.rs
  rust/rhg/src/ui.rs

CHANGE DETAILS

diff --git a/rust/rhg/src/ui.rs b/rust/rhg/src/ui.rs
--- a/rust/rhg/src/ui.rs
+++ b/rust/rhg/src/ui.rs
@@ -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(),
diff --git a/rust/rhg/src/main.rs b/rust/rhg/src/main.rs
--- a/rust/rhg/src/main.rs
+++ b/rust/rhg/src/main.rs
@@ -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 --git a/rust/hg-core/src/config/config.rs b/rust/hg-core/src/config/config.rs
--- a/rust/hg-core/src/config/config.rs
+++ b/rust/hg-core/src/config/config.rs
@@ -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.



To: SimonSapin, #hg-reviewers
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20220211/a32f25ad/attachment-0002.html>


More information about the Mercurial-patches mailing list