rust/rhg/src/commands/debugrhgsparse.rs
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 02 Jan 2025 14:50:06 +0100
changeset 52592 87ceb51d124c
parent 49914 58074252db3c
permissions -rw-r--r--
run-tests: drop jython support I don't think we heard anything about jython support for the past 15 years, so let's drop special support for it in run-tests.py it is most probably broken at that point.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49640
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
     1
use std::{
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
     2
    ffi::{OsStr, OsString},
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
     3
    os::unix::prelude::OsStrExt,
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
     4
};
49484
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     5
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
     6
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
     7
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
     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 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
    10
49640
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    11
pub fn args() -> clap::Command {
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    12
    clap::command!("debugrhgsparse")
49484
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    13
        .arg(
49640
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    14
            clap::Arg::new("files")
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    15
                .value_name("FILES")
49484
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    16
                .required(true)
49640
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    17
                .num_args(1..)
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    18
                .value_parser(clap::value_parser!(std::ffi::OsString))
49484
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    19
                .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
    20
        )
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    21
        .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
    22
}
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    23
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    24
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
    25
    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
    26
49914
58074252db3c rust: run `cargo clippy`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49640
diff changeset
    27
    let (matcher, _warnings) = hg::sparse::matcher(repo).unwrap();
49640
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    28
    let files = invocation.subcommand_args.get_many::<OsString>("files");
49484
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    29
    if let Some(files) = files {
49640
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    30
        let files: Vec<&OsStr> = files
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    31
            .filter(|s| !s.is_empty())
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    32
            .map(|s| s.as_os_str())
37bc3edef76f rhg: upgrade `clap` dependency
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49484
diff changeset
    33
            .collect();
49484
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    34
        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
    35
            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
    36
            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
    37
                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
    38
                    b"yes"
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    39
                } else {
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    40
                    b"no"
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
            )?;
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    43
            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
    44
            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
    45
            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
    46
        }
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    47
    }
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    48
    Ok(())
85f5d11c77dd rhg: add debugrhgsparse command to help figure out bugs in rhg
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
    49
}