1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
use clap::Parser;
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
#[derive(Parser, Clone, PartialEq, Eq, Debug)]
#[command(
name = "cargo-modules",
about = "Print a crate's module tree or graph.",
// after_help = r#"
// If neither `--bin` nor `--example` are given,
// then if the project only has one bin target it will be run.
// Otherwise `--bin` specifies the bin target to run.
// At most one `--bin` can be provided.
// "#
)]
pub enum Command {
#[command(
name = "generate",
about = "Generate a visualization for a crate's structure."
)]
Generate {
#[clap(subcommand)]
cmd: crate::generate::Command,
},
}
impl Command {
pub(crate) fn sanitize(&mut self) {
match self {
Self::Generate { cmd } => cmd.sanitize(),
}
}
pub fn run(&self) -> Result<(), anyhow::Error> {
match self {
Self::Generate { cmd } => cmd.run(),
}
}
}