rust/rhg/src/commands/debugrhgsparse.rs
author Raphaël Gomès <rgomes@octobus.net>
Tue, 19 Jul 2022 15:37:09 +0200
changeset 49484 85f5d11c77dd
child 49639 37bc3edef76f
permissions -rw-r--r--
rhg: add debugrhgsparse command to help figure out bugs in rhg
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
}