debugrhgsparse.rs
43 lines
| 1.3 KiB
| application/rls-services+xml
|
RustLexer
|
r50379 | use std::os::unix::prelude::OsStrExt; | ||
use crate::error::CommandError; | ||||
use clap::SubCommand; | ||||
use hg::{self, utils::hg_path::HgPath}; | ||||
pub const HELP_TEXT: &str = ""; | ||||
pub fn args() -> clap::App<'static, 'static> { | ||||
SubCommand::with_name("debugrhgsparse") | ||||
.arg( | ||||
clap::Arg::with_name("files") | ||||
.required(true) | ||||
.multiple(true) | ||||
.empty_values(false) | ||||
.value_name("FILES") | ||||
.help("Files to check against sparse profile"), | ||||
) | ||||
.about(HELP_TEXT) | ||||
} | ||||
pub fn run(invocation: &crate::CliInvocation) -> Result<(), CommandError> { | ||||
let repo = invocation.repo?; | ||||
let (matcher, _warnings) = hg::sparse::matcher(&repo).unwrap(); | ||||
let files = invocation.subcommand_args.values_of_os("files"); | ||||
if let Some(files) = files { | ||||
for file in files { | ||||
invocation.ui.write_stdout(b"matches: ")?; | ||||
invocation.ui.write_stdout( | ||||
if matcher.matches(HgPath::new(file.as_bytes())) { | ||||
b"yes" | ||||
} else { | ||||
b"no" | ||||
}, | ||||
)?; | ||||
invocation.ui.write_stdout(b" | file: ")?; | ||||
invocation.ui.write_stdout(file.as_bytes())?; | ||||
invocation.ui.write_stdout(b"\n")?; | ||||
} | ||||
} | ||||
Ok(()) | ||||
} | ||||