rust/rhg/src/main.rs
changeset 45542 33ded2d3f4fc
parent 45537 2f8227a12592
child 45923 ead435aa5294
equal deleted inserted replaced
45541:522ec3dc44b9 45542:33ded2d3f4fc
    34                         .long("--revision")
    34                         .long("--revision")
    35                         .value_name("REV")
    35                         .value_name("REV")
    36                         .takes_value(true),
    36                         .takes_value(true),
    37                 )
    37                 )
    38                 .about(commands::files::HELP_TEXT),
    38                 .about(commands::files::HELP_TEXT),
       
    39         )
       
    40         .subcommand(
       
    41             SubCommand::with_name("cat")
       
    42                 .arg(
       
    43                     Arg::with_name("rev")
       
    44                         .help("search the repository as it is in REV")
       
    45                         .short("-r")
       
    46                         .long("--revision")
       
    47                         .value_name("REV")
       
    48                         .takes_value(true),
       
    49                 )
       
    50                 .arg(
       
    51                     clap::Arg::with_name("files")
       
    52                         .required(true)
       
    53                         .multiple(true)
       
    54                         .empty_values(false)
       
    55                         .value_name("FILE")
       
    56                         .help("Activity to start: activity@category"),
       
    57                 )
       
    58                 .about(commands::cat::HELP_TEXT),
    39         )
    59         )
    40         .subcommand(
    60         .subcommand(
    41             SubCommand::with_name("debugdata")
    61             SubCommand::with_name("debugdata")
    42                 .about(commands::debugdata::HELP_TEXT)
    62                 .about(commands::debugdata::HELP_TEXT)
    43                 .arg(
    63                 .arg(
    96     match matches.subcommand() {
   116     match matches.subcommand() {
    97         ("root", _) => commands::root::RootCommand::new().run(&ui),
   117         ("root", _) => commands::root::RootCommand::new().run(&ui),
    98         ("files", Some(matches)) => {
   118         ("files", Some(matches)) => {
    99             commands::files::FilesCommand::try_from(matches)?.run(&ui)
   119             commands::files::FilesCommand::try_from(matches)?.run(&ui)
   100         }
   120         }
       
   121         ("cat", Some(matches)) => {
       
   122             commands::cat::CatCommand::try_from(matches)?.run(&ui)
       
   123         }
   101         ("debugdata", Some(matches)) => {
   124         ("debugdata", Some(matches)) => {
   102             commands::debugdata::DebugDataCommand::try_from(matches)?.run(&ui)
   125             commands::debugdata::DebugDataCommand::try_from(matches)?.run(&ui)
   103         }
   126         }
   104         _ => unreachable!(), // Because of AppSettings::SubcommandRequired,
   127         _ => unreachable!(), // Because of AppSettings::SubcommandRequired,
   105     }
   128     }
   109     type Error = CommandError;
   132     type Error = CommandError;
   110 
   133 
   111     fn try_from(args: &'a ArgMatches) -> Result<Self, Self::Error> {
   134     fn try_from(args: &'a ArgMatches) -> Result<Self, Self::Error> {
   112         let rev = args.value_of("rev");
   135         let rev = args.value_of("rev");
   113         Ok(commands::files::FilesCommand::new(rev))
   136         Ok(commands::files::FilesCommand::new(rev))
       
   137     }
       
   138 }
       
   139 
       
   140 impl<'a> TryFrom<&'a ArgMatches<'_>> for commands::cat::CatCommand<'a> {
       
   141     type Error = CommandError;
       
   142 
       
   143     fn try_from(args: &'a ArgMatches) -> Result<Self, Self::Error> {
       
   144         let rev = args.value_of("rev");
       
   145         let files = match args.values_of("files") {
       
   146             Some(files) => files.collect(),
       
   147             None => vec![],
       
   148         };
       
   149         Ok(commands::cat::CatCommand::new(rev, files))
   114     }
   150     }
   115 }
   151 }
   116 
   152 
   117 impl<'a> TryFrom<&'a ArgMatches<'_>>
   153 impl<'a> TryFrom<&'a ArgMatches<'_>>
   118     for commands::debugdata::DebugDataCommand<'a>
   154     for commands::debugdata::DebugDataCommand<'a>