annotate rust/rhg/src/commands/debugrhgsparse.rs @ 49484:85f5d11c77dd

rhg: add debugrhgsparse command to help figure out bugs in rhg
author Raphaël Gomès <rgomes@octobus.net>
date Tue, 19 Jul 2022 15:37:09 +0200
parents
children 37bc3edef76f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49484
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
1 use std::os::unix::prelude::OsStrExt;
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
2
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
3 use crate::error::CommandError;
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
4 use clap::SubCommand;
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
5 use hg::{self, utils::hg_path::HgPath};
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
6
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
7 pub const HELP_TEXT: &str = "";
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
8
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
9 pub fn args() -> clap::App<'static, 'static> {
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
10 SubCommand::with_name("debugrhgsparse")
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
11 .arg(
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
12 clap::Arg::with_name("files")
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
13 .required(true)
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
14 .multiple(true)
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
15 .empty_values(false)
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
16 .value_name("FILES")
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
17 .help("Files to check against sparse profile"),
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
18 )
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
19 .about(HELP_TEXT)
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
20 }
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
21
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
22 pub fn run(invocation: &crate::CliInvocation) -> Result<(), CommandError> {
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
23 let repo = invocation.repo?;
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
24
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
25 let (matcher, _warnings) = hg::sparse::matcher(&repo).unwrap();
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
26 let files = invocation.subcommand_args.values_of_os("files");
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
27 if let Some(files) = files {
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
28 for file in files {
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
29 invocation.ui.write_stdout(b"matches: ")?;
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
30 invocation.ui.write_stdout(
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
31 if matcher.matches(HgPath::new(file.as_bytes())) {
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
32 b"yes"
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
33 } else {
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
34 b"no"
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
35 },
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
36 )?;
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
37 invocation.ui.write_stdout(b" | file: ")?;
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
38 invocation.ui.write_stdout(file.as_bytes())?;
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
39 invocation.ui.write_stdout(b"\n")?;
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
40 }
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
41 }
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
42 Ok(())
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net>
parents:
diff changeset
43 }