##// END OF EJS Templates
typing: correct the signature of error.CommandError...
typing: correct the signature of error.CommandError There's a place in `mercurial.dispatch._parse()` that passes None if a parse error happens before the command can be parsed out, and casting the error to bytes works fine because the command and message fields are apparently ignored. Likewise, TortoiseHg similarly passes None for the same reason.

File last commit:

r50808:c15b415d default
r51258:3dbc7b1e stable
Show More
debugdata.rs
71 lines | 2.0 KiB | application/rls-services+xml | RustLexer
Simon Sapin
rust: remove `FooError` structs with only `kind: FooErrorKind` enum field...
r47163 use crate::error::CommandError;
Simon Sapin
rhg: Move subcommand CLI arguments definitions to respective modules...
r47251 use clap::Arg;
use clap::ArgGroup;
Simon Sapin
rhg: replace `map_*_error` functions with `From` impls...
r47165 use hg::operations::{debug_data, DebugDataKind};
Antoine Cezar
rhg: add a `DebugData` `Command` to prepare the `rhg debugdata` subcommand...
r46099
pub const HELP_TEXT: &str = "
Dump the contents of a data file revision
";
Raphaël Gomès
rhg: upgrade `clap` dependency...
r50534 pub fn args() -> clap::Command {
clap::command!("debugdata")
Simon Sapin
rhg: Move subcommand CLI arguments definitions to respective modules...
r47251 .arg(
Raphaël Gomès
rhg: upgrade `clap` dependency...
r50534 Arg::new("changelog")
Simon Sapin
rhg: Move subcommand CLI arguments definitions to respective modules...
r47251 .help("open changelog")
Raphaël Gomès
rhg: upgrade `clap` dependency...
r50534 .short('c')
.action(clap::ArgAction::SetTrue),
Simon Sapin
rhg: Move subcommand CLI arguments definitions to respective modules...
r47251 )
.arg(
Raphaël Gomès
rhg: upgrade `clap` dependency...
r50534 Arg::new("manifest")
Simon Sapin
rhg: Move subcommand CLI arguments definitions to respective modules...
r47251 .help("open manifest")
Raphaël Gomès
rhg: upgrade `clap` dependency...
r50534 .short('m')
.action(clap::ArgAction::SetTrue),
Simon Sapin
rhg: Move subcommand CLI arguments definitions to respective modules...
r47251 )
.group(
Raphaël Gomès
rhg: upgrade `clap` dependency...
r50534 ArgGroup::new("revlog")
Simon Sapin
rhg: Move subcommand CLI arguments definitions to respective modules...
r47251 .args(&["changelog", "manifest"])
.required(true),
)
.arg(
Raphaël Gomès
rhg: upgrade `clap` dependency...
r50534 Arg::new("rev")
Simon Sapin
rhg: Move subcommand CLI arguments definitions to respective modules...
r47251 .help("revision")
.required(true)
.value_name("REV"),
)
.about(HELP_TEXT)
}
Raphaël Gomès
rust: use `logging_timer` instead of `micro_timer`...
r50808 #[logging_timer::time("trace")]
Simon Sapin
rhg: Group values passed to every sub-command into a struct...
r47334 pub fn run(invocation: &crate::CliInvocation) -> Result<(), CommandError> {
let args = invocation.subcommand_args;
Simon Sapin
rhg: replace command structs with functions...
r47250 let rev = args
Raphaël Gomès
rhg: upgrade `clap` dependency...
r50534 .get_one::<String>("rev")
Simon Sapin
rhg: replace command structs with functions...
r47250 .expect("rev should be a required argument");
Raphaël Gomès
rhg: upgrade `clap` dependency...
r50534 let kind = match (
args.get_one::<bool>("changelog").unwrap(),
args.get_one::<bool>("manifest").unwrap(),
) {
(true, false) => DebugDataKind::Changelog,
(false, true) => DebugDataKind::Manifest,
(true, true) => {
unreachable!("Should not happen since options are exclusive")
}
(false, false) => {
unreachable!("Should not happen since options are required")
}
};
Antoine Cezar
rhg: add a `DebugData` `Command` to prepare the `rhg debugdata` subcommand...
r46099
Simon Sapin
rhg: Move `Repo` object creation into `main()`...
r47335 let repo = invocation.repo?;
Raphaël Gomès
rhg: fallback in `debugdata` if repo has `narrow`...
r50375 if repo.has_narrow() {
return Err(CommandError::unsupported(
"support for ellipsis nodes is missing and repo has narrow enabled",
));
}
Raphaël Gomès
rhg: upgrade `clap` dependency...
r50534 let data = debug_data(repo, rev, kind).map_err(|e| (e, rev.as_ref()))?;
Antoine Cezar
rhg: add a `DebugData` `Command` to prepare the `rhg debugdata` subcommand...
r46099
Simon Sapin
rhg: Group values passed to every sub-command into a struct...
r47334 let mut stdout = invocation.ui.stdout_buffer();
Simon Sapin
rhg: replace command structs with functions...
r47250 stdout.write_all(&data)?;
stdout.flush()?;
Antoine Cezar
rhg: add a `DebugData` `Command` to prepare the `rhg debugdata` subcommand...
r46099
Simon Sapin
rhg: replace command structs with functions...
r47250 Ok(())
Antoine Cezar
rhg: add a `DebugData` `Command` to prepare the `rhg debugdata` subcommand...
r46099 }