From 1a7c22bdbf8bec7b5fe8ab4231a58ec803388c48 Mon Sep 17 00:00:00 2001 From: TECHNOFAB Date: Fri, 27 Dec 2024 14:31:50 +0100 Subject: [PATCH] fix: make part and file section in config optional --- .bumpversion.toml | 2 +- Cargo.lock | 2 +- Cargo.toml | 2 +- src/config.rs | 4 ++-- src/main.rs | 7 +++++-- src/utils.rs | 2 +- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.bumpversion.toml b/.bumpversion.toml index 26e90be..faa0fd5 100644 --- a/.bumpversion.toml +++ b/.bumpversion.toml @@ -1,4 +1,4 @@ -current_version = "1.0.0" +current_version = "1.0.1" commit = true tag = true message = "chore: bump {current_version} → {new_version}" diff --git a/Cargo.lock b/Cargo.lock index f5f2424..8810e23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,7 +61,7 @@ dependencies = [ [[package]] name = "bump2version" -version = "1.0.0" +version = "1.0.1" dependencies = [ "clap", "regex", diff --git a/Cargo.toml b/Cargo.toml index 73bdd09..194717f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bump2version" -version = "1.0.0" +version = "1.0.1" edition = "2021" description = "⬆️ Easily manage version numbers in your projects." license = "MIT" diff --git a/src/config.rs b/src/config.rs index 3da1183..1384979 100644 --- a/src/config.rs +++ b/src/config.rs @@ -13,8 +13,8 @@ pub(crate) struct Config { #[serde(default = "default_serialize")] pub(crate) serialize: String, - pub(crate) part: HashMap, - pub(crate) file: HashMap, + pub(crate) part: Option>, + pub(crate) file: Option>, } #[derive(Debug, Clone, Deserialize)] diff --git a/src/main.rs b/src/main.rs index ace6f87..244cb77 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,8 @@ use self::cli::Cli; use crate::config::Config; use crate::utils::attempt_version_bump; use clap::Parser; +use config::File; +use std::collections::HashMap; use std::fs; use std::process::{exit, Command}; use tracing::{error, info, level_filters::LevelFilter, warn}; @@ -57,7 +59,8 @@ fn main() -> Result<(), Box> { .or(config.message) .unwrap_or("Bump version: {current_version} → {new_version}".to_string()); - let files: Vec<&String> = config.file.keys().collect(); + let config_files = config.file.unwrap_or_default(); + let files: Vec<&String> = config_files.keys().collect(); // Check if Git working directory is clean if fs::metadata(".git").is_ok() { @@ -84,7 +87,7 @@ fn main() -> Result<(), Box> { info!(amount = &files.len(), "Updating version in files"); for path in files.clone() { let content = fs::read_to_string(path)?; - let format = &config.file.get(path).unwrap().format; + let format = &config_files.get(path).unwrap().format.clone(); let old_line = format.replace("{version}", ¤t_version); if !content.contains(&old_line) { diff --git a/src/utils.rs b/src/utils.rs index 7e31e12..bf5ff9e 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -41,7 +41,7 @@ pub fn attempt_version_bump(args: Cli, config: Config) -> Option { for label in order.clone() { if let Some(part) = parsed.get_mut(label) { - let part_cfg = part_configs.get(label); + let part_cfg = part_configs.as_ref().and_then(|c| c.get(label)); if label == args.bump { match part_cfg