Mercurial > public > mercurial-scm > hg-stable
annotate rust/rhg/src/commands/debugignorerhg.rs @ 52336:04b9a56c2d25
rust-lib: only export very common types to the top of the crate
This was done very early in the Rust project's lifecycle and I had very little
Rust experience. Let's keep the `DirstateParents` since they'll pop up in
all higher-level code and make the rest more explicit imports to make the
imports less confusing and the lib less cluttered.
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Mon, 04 Nov 2024 11:13:05 +0100 |
parents | 58074252db3c |
children | e2e49069eeb6 |
rev | line source |
---|---|
48403
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
1 use crate::error::CommandError; |
52336
04b9a56c2d25
rust-lib: only export very common types to the top of the crate
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49987
diff
changeset
|
2 use hg::dirstate::status::StatusError; |
48403
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
3 use hg::matchers::get_ignore_matcher; |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
4 use log::warn; |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
5 |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
6 pub const HELP_TEXT: &str = " |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
7 Show effective hgignore patterns used by rhg. |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
8 |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
9 This is a pure Rust version of `hg debugignore`. |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
10 |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
11 Some options might be missing, check the list below. |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
12 "; |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
13 |
49758
37bc3edef76f
rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49550
diff
changeset
|
14 pub fn args() -> clap::Command { |
37bc3edef76f
rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49550
diff
changeset
|
15 clap::command!("debugignorerhg").about(HELP_TEXT) |
48403
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
16 } |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
17 |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
18 pub fn run(invocation: &crate::CliInvocation) -> Result<(), CommandError> { |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
19 let repo = invocation.repo?; |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
20 |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
21 let ignore_file = repo.working_directory_vfs().join(".hgignore"); // TODO hardcoded |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
22 |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
23 let (ignore_matcher, warnings) = get_ignore_matcher( |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
24 vec![ignore_file], |
49987
58074252db3c
rust: run `cargo clippy`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49758
diff
changeset
|
25 repo.working_directory_path(), |
49550
363923bd51cd
dirstate-v2: hash the source of the ignore patterns as well
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48403
diff
changeset
|
26 &mut |_source, _pattern_bytes| (), |
48403
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
27 ) |
49987
58074252db3c
rust: run `cargo clippy`
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49758
diff
changeset
|
28 .map_err(StatusError::from)?; |
48403
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
29 |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
30 if !warnings.is_empty() { |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
31 warn!("Pattern warnings: {:?}", &warnings); |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
32 } |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
33 |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
34 let patterns = ignore_matcher.debug_get_patterns(); |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
35 invocation.ui.write_stdout(patterns)?; |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
36 invocation.ui.write_stdout(b"\n")?; |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
37 Ok(()) |
6d4daf51283c
rhg: implement the debugignorerhg subcommand
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
38 } |