rust/rhg/src/main.rs
changeset 45537 2f8227a12592
parent 45530 b1cea0dc9db0
child 45542 33ded2d3f4fc
--- a/rust/rhg/src/main.rs	Fri Sep 18 16:52:16 2020 +0200
+++ b/rust/rhg/src/main.rs	Wed Sep 09 14:53:15 2020 +0200
@@ -26,7 +26,16 @@
             SubCommand::with_name("root").about(commands::root::HELP_TEXT),
         )
         .subcommand(
-            SubCommand::with_name("files").about(commands::files::HELP_TEXT),
+            SubCommand::with_name("files")
+                .arg(
+                    Arg::with_name("rev")
+                        .help("search the repository as it is in REV")
+                        .short("-r")
+                        .long("--revision")
+                        .value_name("REV")
+                        .takes_value(true),
+                )
+                .about(commands::files::HELP_TEXT),
         )
         .subcommand(
             SubCommand::with_name("debugdata")
@@ -86,7 +95,9 @@
 ) -> Result<(), CommandError> {
     match matches.subcommand() {
         ("root", _) => commands::root::RootCommand::new().run(&ui),
-        ("files", _) => commands::files::FilesCommand::new().run(&ui),
+        ("files", Some(matches)) => {
+            commands::files::FilesCommand::try_from(matches)?.run(&ui)
+        }
         ("debugdata", Some(matches)) => {
             commands::debugdata::DebugDataCommand::try_from(matches)?.run(&ui)
         }
@@ -94,6 +105,15 @@
     }
 }
 
+impl<'a> TryFrom<&'a ArgMatches<'_>> for commands::files::FilesCommand<'a> {
+    type Error = CommandError;
+
+    fn try_from(args: &'a ArgMatches) -> Result<Self, Self::Error> {
+        let rev = args.value_of("rev");
+        Ok(commands::files::FilesCommand::new(rev))
+    }
+}
+
 impl<'a> TryFrom<&'a ArgMatches<'_>>
     for commands::debugdata::DebugDataCommand<'a>
 {