use crate::{
branching::{Branch, Feature},
cli::version_control::{Diff, Init, New},
};
use clap::{Args, Parser, Subcommand};
pub enum VCS {
Git,
Mercurial,
Breezy,
}
#[derive(Debug, Parser)]
#[clap(name = "scud")]
#[clap(
about = "A tool for streamlining the version and source control processes of \
your development workflow.",
long_about = "Scud was created to fill the gaps between the version control \
processes of a typical development workflow and build upon the \
features provided by similar tools in thespace (commitizen, cz \
cli, etc.). The tool was created with an emphasis on user \
diagnostics and performance. All commands support aliases for \
more terse usage thanks to clap to further enhance overall UX."
)]
#[clap(version)]
pub struct Cli {
#[clap(subcommand)]
pub command: Commands,
}
#[derive(Debug, Subcommand)]
pub enum Commands {
#[clap(alias = "n")]
New(New),
#[clap(alias = "i")]
Init(Init),
#[clap(alias = "s")]
Stage(Stage),
#[clap(alias = "u")]
Unstage(Unstage),
#[clap(alias = "st")]
State(State),
#[clap(alias = "br")]
Branch(Branch),
#[clap(alias = "f")]
Feature(Feature),
#[clap(alias = "d")]
Diff(Diff),
#[clap(alias = "c")]
Commit(Commit),
#[clap(alias = "ca")]
CommitAll(CommitAll),
#[clap(alias = "ps")]
Push(Push),
#[clap(alias = "pl")]
Pull(Pull),
#[clap(alias = "stream")]
Upstream(Upstream),
#[clap(alias = "up")]
Update(Update),
#[clap(alias = "hc")]
Healthcheck,
}
#[derive(Debug, Args)]
pub struct Setup {
#[clap(value_parser)]
pub vcs: Option<String>,
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub info: bool,
}
#[derive(Debug, Args)]
pub struct State {
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub info: bool,
}
#[derive(Debug, Args)]
pub struct Upstream {
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub info: bool,
}
#[derive(Debug, Args)]
pub struct Stage {
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub dry_run: bool,
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub info: bool,
}
#[derive(Debug, Args)]
pub struct Unstage {
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub dry_run: bool,
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub info: bool,
}
#[derive(Debug, Args)]
pub struct Commit {
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub dry_run: bool,
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub info: bool,
}
#[derive(Debug, Args)]
pub struct CommitAll {
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub dry_run: bool,
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub info: bool,
}
#[derive(Debug, Args)]
pub struct Push {
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub dry_run: bool,
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub info: bool,
}
#[derive(Debug, Args)]
pub struct Pull {
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub info: bool,
}
#[derive(Debug, Args)]
pub struct Update {
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub dry_run: bool,
#[clap(short, long, value_parser, required = false, default_value_t = false)]
pub info: bool,
}