Mercurial > public > mercurial-scm > hg-stable
view rust/rhg/src/commands/debugdata.rs @ 47290:40b51c28b242
dirstate-v2: Update the expected output of some tests for new requirement
Fix most test failures (except in test-narrow-debugrebuilddirstate.t and
test-upgrade-repo.t) caused by the new entry in config or in .hg/requires
when running `run-tests.py --extra-config-opt format.exp-dirstate-v2=1`
There is no CI?so far for this configuration.
Differential Revision: https://phab.mercurial-scm.org/D10718
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Wed, 19 May 2021 13:15:00 +0200 |
parents | 5ce2aa7c2ad5 |
children | 0199712c7a6d |
line wrap: on
line source
use crate::error::CommandError; use clap::Arg; use clap::ArgGroup; use hg::operations::{debug_data, DebugDataKind}; use micro_timer::timed; pub const HELP_TEXT: &str = " Dump the contents of a data file revision "; pub fn args() -> clap::App<'static, 'static> { clap::SubCommand::with_name("debugdata") .arg( Arg::with_name("changelog") .help("open changelog") .short("-c") .long("--changelog"), ) .arg( Arg::with_name("manifest") .help("open manifest") .short("-m") .long("--manifest"), ) .group( ArgGroup::with_name("") .args(&["changelog", "manifest"]) .required(true), ) .arg( Arg::with_name("rev") .help("revision") .required(true) .value_name("REV"), ) .about(HELP_TEXT) } #[timed] pub fn run(invocation: &crate::CliInvocation) -> Result<(), CommandError> { let args = invocation.subcommand_args; let rev = args .value_of("rev") .expect("rev should be a required argument"); let kind = match (args.is_present("changelog"), args.is_present("manifest")) { (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") } }; let repo = invocation.repo?; let data = debug_data(repo, rev, kind).map_err(|e| (e, rev))?; let mut stdout = invocation.ui.stdout_buffer(); stdout.write_all(&data)?; stdout.flush()?; Ok(()) }