pub mod bump;
pub mod calver;
pub mod cargo;
pub mod gradle;
pub mod json;
pub mod project;
pub mod pubspec;
pub mod pyproject;
pub mod regex_engine;
pub mod scan;
pub mod toml_helpers;
pub mod version_file;
pub mod version_plain;
pub use bump::{BumpLevel, BumpSummary, apply_bump, apply_prerelease, determine_bump, summarise};
pub use cargo::CargoVersionFile;
pub use gradle::GradleVersionFile;
pub use json::{DenoVersionFile, JsonVersionFile};
pub use project::{ProjectJsonVersionFile, ProjectTomlVersionFile, ProjectYamlVersionFile};
pub use pubspec::PubspecVersionFile;
pub use pyproject::PyprojectVersionFile;
pub use regex_engine::RegexVersionFile;
pub use version_file::{
CustomVersionFile, DetectedFile, UpdateResult, VersionFile, VersionFileError,
detect_version_files, update_version_files,
};
pub use version_plain::PlainVersionFile;
pub fn replace_version_in_toml(
content: &str,
new_version: &str,
) -> Result<String, VersionFileError> {
CargoVersionFile.write_version(content, new_version)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn replace_version_in_toml_basic() {
let input = r#"[package]
name = "my-crate"
version = "0.1.0"
edition = "2021"
"#;
let result = replace_version_in_toml(input, "1.0.0").unwrap();
assert!(result.contains("version = \"1.0.0\""));
assert!(result.contains("name = \"my-crate\""));
assert!(result.contains("edition = \"2021\""));
}
#[test]
fn replace_version_only_in_package_section() {
let input = r#"[package]
name = "my-crate"
version = "0.1.0"
[dependencies]
foo = { version = "1.0" }
"#;
let result = replace_version_in_toml(input, "2.0.0").unwrap();
assert!(result.contains("[package]"));
assert!(result.contains("version = \"2.0.0\""));
assert!(result.contains("foo = { version = \"1.0\" }"));
}
}