rhg: Properly format warnings related to ignore patterns
authorSimon Sapin <simon.sapin@octobus.net>
Fri, 17 Dec 2021 16:54:22 +0100
changeset 48511 c9abfb80b4e3
parent 48510 7f633432ca92
child 48512 262a38f10427
rhg: Properly format warnings related to ignore patterns Differential Revision: https://phab.mercurial-scm.org/D11941
rust/rhg/src/commands/status.rs
--- a/rust/rhg/src/commands/status.rs	Tue Nov 09 18:17:52 2021 +0100
+++ b/rust/rhg/src/commands/status.rs	Fri Dec 17 16:54:22 2021 +0100
@@ -22,10 +22,11 @@
 use hg::matchers::AlwaysMatcher;
 use hg::repo::Repo;
 use hg::utils::files::get_bytes_from_os_string;
+use hg::utils::files::get_bytes_from_path;
 use hg::utils::files::get_path_from_bytes;
 use hg::utils::hg_path::{hg_path_to_path_buf, HgPath};
 use hg::StatusOptions;
-use log::{info, warn};
+use log::info;
 use std::io;
 use std::path::PathBuf;
 
@@ -233,8 +234,29 @@
         ignore_files(repo, config),
         options,
     )?;
-    if !pattern_warnings.is_empty() {
-        warn!("Pattern warnings: {:?}", &pattern_warnings);
+    for warning in pattern_warnings {
+        match warning {
+            hg::PatternFileWarning::InvalidSyntax(path, syntax) => ui
+                .write_stderr(&format_bytes!(
+                    b"{}: ignoring invalid syntax '{}'\n",
+                    get_bytes_from_path(path),
+                    &*syntax
+                ))?,
+            hg::PatternFileWarning::NoSuchFile(path) => {
+                let path = if let Ok(relative) =
+                    path.strip_prefix(repo.working_directory_path())
+                {
+                    relative
+                } else {
+                    &*path
+                };
+                ui.write_stderr(&format_bytes!(
+                    b"skipping unreadable pattern file '{}': \
+                      No such file or directory\n",
+                    get_bytes_from_path(path),
+                ))?
+            }
+        }
     }
 
     for (path, error) in ds_status.bad {