use crate::cli::{
files::FilesCommand,
getset::{GetSet, GetSetBuild, GetSetRm},
};
use crate::{version::VersionFile, VersionError};
use clap::Subcommand;
#[derive(Subcommand, Debug, Clone)]
#[command(rename_all = "lower", arg_required_else_help(true))]
pub enum VersionCommand {
Major(GetSet),
Minor(GetSet),
Patch(GetSet),
Alpha(GetSetRm),
Beta(GetSetRm),
RC(GetSetRm),
Build(GetSetBuild),
Get,
File(FilesCommand),
}
impl VersionCommand {
pub fn run(&self, version: &mut VersionFile) -> Result<(), VersionError> {
match self {
VersionCommand::Major(getset) => {
version.key = Some(self.clone());
getset.run(version)
}
VersionCommand::Minor(getset) => {
version.key = Some(self.clone());
getset.run(version)
}
VersionCommand::Patch(getset) => {
version.key = Some(self.clone());
getset.run(version)
}
VersionCommand::Alpha(getset) => {
version.key = Some(self.clone());
getset.run(version)
}
VersionCommand::Beta(getset) => {
version.key = Some(self.clone());
getset.run(version)
}
VersionCommand::RC(getset) => {
version.key = Some(self.clone());
getset.run(version)
}
VersionCommand::Build(getset) => {
version.key = Some(self.clone());
getset.run(version)
}
VersionCommand::Get => {
version.key = Some(self.clone());
version.run()
}
VersionCommand::File(file_cmd) => {
version.key = Some(self.clone());
file_cmd.run(version)
}
}
}
}