use clap::{Parser, Subcommand};
pub mod changelog;
pub mod commit;
pub mod config;
pub mod init;
pub mod log;
pub mod release;
mod util;
pub mod version;
#[derive(Debug, Parser)]
#[clap(
version,
about = "Misc. tools for conventional commits, versioning, and changelogs"
)]
#[clap(propagate_version = true)]
pub struct Cli {
#[clap(subcommand)]
pub commands: Commands,
}
#[derive(Debug, Subcommand)]
pub enum Commands {
Init(init::InitArgs),
Config(config::ConfigArgs),
Commit(commit::CommitArgs),
Log(log::LogArgs),
Version(version::VersionArgs),
Changelog(changelog::ChangelogArgs),
Release(release::ReleaseArgs),
}
pub fn exec(cli: Cli) -> anyhow::Result<()> {
match cli.commands {
Commands::Init(args) => init::run(args),
Commands::Config(args) => config::run(args),
Commands::Commit(args) => commit::run(args),
Commands::Version(args) => version::run(args),
Commands::Log(args) => log::run(args),
Commands::Changelog(args) => changelog::run(args),
Commands::Release(args) => release::run(args),
}
}