aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart-vcs/src/version_guesser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/mozart-vcs/src/version_guesser.rs')
-rw-r--r--crates/mozart-vcs/src/version_guesser.rs26
1 files changed, 24 insertions, 2 deletions
diff --git a/crates/mozart-vcs/src/version_guesser.rs b/crates/mozart-vcs/src/version_guesser.rs
index e70eb4e..038e332 100644
--- a/crates/mozart-vcs/src/version_guesser.rs
+++ b/crates/mozart-vcs/src/version_guesser.rs
@@ -20,6 +20,25 @@ use crate::process::ProcessExecutor;
const DEFAULT_BRANCH_ALIAS: &str = "9999999-dev";
+/// Mirrors `Composer\Package\Version\VersionParser` (itself a thin wrapper
+/// around `Composer\Semver\VersionParser`). In Rust, semver parsing is
+/// handled by `mozart_semver` directly, so this type carries no state;
+/// it exists to keep `VersionGuesser::new` signature compatible with the
+/// PHP constructor.
+pub struct VersionParser;
+
+impl Default for VersionParser {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl VersionParser {
+ pub fn new() -> Self {
+ Self
+ }
+}
+
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GuessedVersion {
pub version: String,
@@ -35,12 +54,15 @@ pub struct VersionGuesser {
impl Default for VersionGuesser {
fn default() -> Self {
- Self::new()
+ Self::new(VersionParser::new())
}
}
impl VersionGuesser {
- pub fn new() -> Self {
+ /// Mirrors `Composer\Package\Version\VersionGuesser::__construct`.
+ /// `_version_parser` is accepted for API parity but unused — Rust relies
+ /// on `mozart_semver` directly.
+ pub fn new(_version_parser: VersionParser) -> Self {
Self {
process: ProcessExecutor::new(),
}