vouch_lib/extension/commands/
mod.rs1use super::common;
2use anyhow::Result;
3use structopt::{self, StructOpt};
4
5mod identify_local_dependencies;
6mod registries_package_metadata;
7mod static_data;
8
9#[derive(Debug, StructOpt, Clone)]
10enum Command {
11 #[structopt(name = "static-data")]
13 StaticData,
14
15 #[structopt(name = "identify-local-dependencies")]
17 IdentifyLocalDependencies(identify_local_dependencies::Arguments),
18
19 #[structopt(name = "registries-package-metadata")]
21 RegistriesPackageMetadata(registries_package_metadata::Arguments),
22}
23
24fn run_command<T: common::Extension + std::fmt::Debug>(
25 command: Command,
26 extension: &mut T,
27) -> Result<()> {
28 match command {
29 Command::StaticData => {
30 static_data::run_command(extension)?;
31 }
32
33 Command::IdentifyLocalDependencies(args) => {
34 identify_local_dependencies::run_command(&args, extension)?;
35 }
36
37 Command::RegistriesPackageMetadata(args) => {
38 registries_package_metadata::run_command(&args, extension)?;
39 }
40 }
41 Ok(())
42}
43
44#[derive(Debug, StructOpt, Clone)]
45#[structopt(about = "Package Code Reviews")]
46#[structopt(global_setting = structopt::clap::AppSettings::ColoredHelp)]
47#[structopt(global_setting = structopt::clap::AppSettings::DeriveDisplayOrder)]
48struct Opts {
49 #[structopt(subcommand)]
50 pub command: Command,
51}
52
53pub fn run<T: common::Extension + std::fmt::Debug>(extension: &mut T) -> Result<()> {
54 let commands = Opts::from_args();
55 match run_command(commands.command, extension) {
56 Ok(_) => {}
57 Err(e) => {
58 eprintln!("{}", e);
59 std::process::exit(-2)
60 }
61 };
62 Ok(())
63}