Compare commits

...

2 commits
1.1.0 ... main

Author SHA1 Message Date
f6a50bbda0
chore: bump 1.1.0 → 1.1.1 2025-07-09 17:11:22 +02:00
2136a99b31
feat: allow specifying current version via cli 2025-07-09 17:11:05 +02:00
7 changed files with 29 additions and 11 deletions

View file

@ -1,4 +1,4 @@
current_version = "1.1.0" current_version = "1.1.1"
commit = true commit = true
tag = true tag = true
message = "chore: bump {current_version} → {new_version}" message = "chore: bump {current_version} → {new_version}"

2
Cargo.lock generated
View file

@ -61,7 +61,7 @@ dependencies = [
[[package]] [[package]]
name = "bump2version" name = "bump2version"
version = "1.1.0" version = "1.1.1"
dependencies = [ dependencies = [
"clap", "clap",
"regex", "regex",

View file

@ -1,6 +1,6 @@
[package] [package]
name = "bump2version" name = "bump2version"
version = "1.1.0" version = "1.1.1"
edition = "2021" edition = "2021"
description = "⬆️ Easily manage version numbers in your projects." description = "⬆️ Easily manage version numbers in your projects."
license = "MIT" license = "MIT"

View file

@ -24,6 +24,10 @@ pub(crate) struct Cli {
#[arg(short = 'n', long = "dry-run", default_value_t = false)] #[arg(short = 'n', long = "dry-run", default_value_t = false)]
pub(crate) dry_run: bool, pub(crate) dry_run: bool,
/// Current version
#[arg(long = "current-version", value_name = "VERSION")]
pub(crate) current_version: Option<String>,
/// New version that should be in the files. /// New version that should be in the files.
#[arg(long = "new-version", value_name = "VERSION")] #[arg(long = "new-version", value_name = "VERSION")]
pub(crate) new_version: Option<String>, pub(crate) new_version: Option<String>,

View file

@ -4,7 +4,7 @@ use serde_derive::Deserialize;
#[derive(Debug, Clone, Deserialize)] #[derive(Debug, Clone, Deserialize)]
pub(crate) struct Config { pub(crate) struct Config {
pub(crate) current_version: String, pub(crate) current_version: Option<String>,
pub(crate) message: Option<String>, pub(crate) message: Option<String>,
pub(crate) commit: bool, pub(crate) commit: bool,
pub(crate) tag: bool, pub(crate) tag: bool,

View file

@ -38,12 +38,23 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
} }
}; };
let current_version = config.current_version.clone(); let current_version = args
.current_version
let attempted_new_version = args
.new_version
.clone() .clone()
.or(attempt_version_bump(args.clone(), config.clone())); .or(config.current_version.clone());
if current_version.is_none() {
error!("No current version could be determined, either set in config or pass as arg");
exit(1);
}
let current_version = current_version.unwrap();
let attempted_new_version = args.new_version.clone().or(attempt_version_bump(
args.clone(),
config.clone(),
current_version.clone(),
));
if attempted_new_version.is_some() { if attempted_new_version.is_some() {
let new_version = attempted_new_version.clone().unwrap(); let new_version = attempted_new_version.clone().unwrap();

View file

@ -6,7 +6,11 @@ use std::collections::HashMap;
use std::ops::Index; use std::ops::Index;
use tracing::{error, trace}; use tracing::{error, trace};
pub(crate) fn attempt_version_bump(args: Cli, config: Config) -> Option<String> { pub(crate) fn attempt_version_bump(
args: Cli,
config: Config,
current_version: String,
) -> Option<String> {
let parse_regex = config.parse; let parse_regex = config.parse;
let regex = match Regex::new(&parse_regex) { let regex = match Regex::new(&parse_regex) {
Ok(r) => r, Ok(r) => r,
@ -16,7 +20,6 @@ pub(crate) fn attempt_version_bump(args: Cli, config: Config) -> Option<String>
} }
}; };
let current_version = config.current_version;
let mut parsed: HashMap<String, String> = HashMap::new(); let mut parsed: HashMap<String, String> = HashMap::new();
if let Some(captures) = regex.captures(&current_version) { if let Some(captures) = regex.captures(&current_version) {