use std::process::ExitCode;
use clap::{Args, Subcommand};
use crate::config::ResolvedContext;
use crate::output::OutputFormat;
pub mod lineage;
pub mod overview;
pub mod render;
pub mod stats;
pub mod team;
pub mod tree;
#[derive(Args)]
pub struct TopologyArgs {
#[command(subcommand)]
pub command: TopologyCommands,
}
#[derive(Subcommand)]
pub enum TopologyCommands {
Overview(overview::OverviewArgs),
Tree(tree::TreeArgs),
Team(team::TeamArgs),
Lineage(lineage::LineageArgs),
Stats(stats::StatsArgs),
}
pub fn dispatch(args: TopologyArgs, ctx: &ResolvedContext, output: OutputFormat) -> ExitCode {
match args.command {
TopologyCommands::Overview(a) => overview::run(a, ctx, output),
TopologyCommands::Tree(a) => tree::run(a, ctx, output),
TopologyCommands::Team(a) => team::run(a, ctx, output),
TopologyCommands::Lineage(a) => lineage::run(a, ctx, output),
TopologyCommands::Stats(a) => stats::run(a, ctx, output),
}
}