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