diff options
Diffstat (limited to 'crates/shirabe/src/package/version')
| -rw-r--r-- | crates/shirabe/src/package/version/stability_filter.rs | 4 | ||||
| -rw-r--r-- | crates/shirabe/src/package/version/version_bumper.rs | 12 | ||||
| -rw-r--r-- | crates/shirabe/src/package/version/version_parser.rs | 22 |
3 files changed, 32 insertions, 6 deletions
diff --git a/crates/shirabe/src/package/version/stability_filter.rs b/crates/shirabe/src/package/version/stability_filter.rs index d08492c..5053e9d 100644 --- a/crates/shirabe/src/package/version/stability_filter.rs +++ b/crates/shirabe/src/package/version/stability_filter.rs @@ -1,6 +1,6 @@ //! ref: composer/src/Composer/Package/Version/StabilityFilter.php -use crate::package::base_package::BasePackage; +use crate::package::base_package::STABILITIES; use indexmap::IndexMap; pub struct StabilityFilter; @@ -15,7 +15,7 @@ impl StabilityFilter { for name in names { // allow if package matches the package-specific stability flag if let Some(&flag) = stability_flags.get(name) { - if let Some(&stability_value) = BasePackage::STABILITIES.get(stability) { + if let Some(&stability_value) = STABILITIES.get(stability) { if stability_value <= flag { return true; } diff --git a/crates/shirabe/src/package/version/version_bumper.rs b/crates/shirabe/src/package/version/version_bumper.rs index 5911458..8963fd6 100644 --- a/crates/shirabe/src/package/version/version_bumper.rs +++ b/crates/shirabe/src/package/version/version_bumper.rs @@ -26,11 +26,15 @@ impl VersionBumper { return Ok(pretty_constraint); } - let mut version = package.get_version(); - if package.get_version().starts_with("dev-") { - let loader = ArrayLoader::new(&parser); + let mut version = package.get_version().to_string(); + if version.starts_with("dev-") { + // TODO(phase-b): ArrayLoader::new takes Option<VersionParser> by value; pass None until + // VersionParser sharing is reconciled. + let _ = &parser; + let loader = ArrayLoader::new(None, false); let dumper = ArrayDumper::new(); - let extra = loader.get_branch_alias(dumper.dump(package)); + let dumped = dumper.dump(package); + let extra = loader.get_branch_alias(&dumped)?; if extra.is_none() || extra.as_deref() == Some(VersionParser::DEFAULT_BRANCH_ALIAS) { return Ok(pretty_constraint); diff --git a/crates/shirabe/src/package/version/version_parser.rs b/crates/shirabe/src/package/version/version_parser.rs index 6bb1004..6dbf425 100644 --- a/crates/shirabe/src/package/version/version_parser.rs +++ b/crates/shirabe/src/package/version/version_parser.rs @@ -74,6 +74,28 @@ impl VersionParser { Ok(result) } + pub fn new() -> Self { + Self { + inner: SemverVersionParser, + } + } + + pub fn normalize(&self, version: &str, full_version: Option<&str>) -> anyhow::Result<String> { + self.inner.normalize(version, full_version) + } + + pub fn normalize_stability(stability: &str) -> anyhow::Result<String> { + SemverVersionParser::normalize_stability(stability) + } + + pub fn normalize_branch(&self, name: &str) -> anyhow::Result<String> { + self.inner.normalize_branch(name) + } + + pub fn parse_stability(version: &str) -> String { + SemverVersionParser::parse_stability(version) + } + pub fn is_upgrade(normalized_from: &str, normalized_to: &str) -> anyhow::Result<bool> { if normalized_from == normalized_to { return Ok(true); |
