aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/mozart/src')
-rw-r--r--crates/mozart/src/commands/create_project.rs1
-rw-r--r--crates/mozart/src/commands/remove.rs4
-rw-r--r--crates/mozart/src/commands/require.rs3
-rw-r--r--crates/mozart/src/commands/update.rs24
4 files changed, 32 insertions, 0 deletions
diff --git a/crates/mozart/src/commands/create_project.rs b/crates/mozart/src/commands/create_project.rs
index fc0efee..89b3e4f 100644
--- a/crates/mozart/src/commands/create_project.rs
+++ b/crates/mozart/src/commands/create_project.rs
@@ -443,6 +443,7 @@ pub async fn execute(
locked_package_names: indexmap::IndexSet::new(),
locked_packages: Vec::new(),
block_abandoned: false,
+ root_branch_alias: None,
};
console.info("Resolving dependencies...");
diff --git a/crates/mozart/src/commands/remove.rs b/crates/mozart/src/commands/remove.rs
index eb6ee4a..f41d8b5 100644
--- a/crates/mozart/src/commands/remove.rs
+++ b/crates/mozart/src/commands/remove.rs
@@ -277,6 +277,7 @@ pub async fn execute(
locked_package_names: indexmap::IndexSet::new(),
locked_packages: Vec::new(),
block_abandoned: false,
+ root_branch_alias: None,
};
// Print header messages
@@ -563,6 +564,7 @@ async fn remove_unused(
locked_package_names: indexmap::IndexSet::new(),
locked_packages: Vec::new(),
block_abandoned: false,
+ root_branch_alias: None,
};
console.info("Resolving dependencies to detect unused packages...");
@@ -919,6 +921,7 @@ mod tests {
locked_package_names: IndexSet::new(),
locked_packages: Vec::new(),
block_abandoned: false,
+ root_branch_alias: None,
};
let resolved = resolve(&request)
.await
@@ -978,6 +981,7 @@ mod tests {
locked_package_names: IndexSet::new(),
locked_packages: Vec::new(),
block_abandoned: false,
+ root_branch_alias: None,
};
let resolved2 = resolve(&request2)
.await
diff --git a/crates/mozart/src/commands/require.rs b/crates/mozart/src/commands/require.rs
index 110bd1a..0816d13 100644
--- a/crates/mozart/src/commands/require.rs
+++ b/crates/mozart/src/commands/require.rs
@@ -665,6 +665,7 @@ pub async fn execute(
locked_package_names: indexmap::IndexSet::new(),
locked_packages: Vec::new(),
block_abandoned: false,
+ root_branch_alias: None,
};
// Print header messages
@@ -1075,6 +1076,7 @@ mod tests {
locked_package_names: IndexSet::new(),
locked_packages: Vec::new(),
block_abandoned: false,
+ root_branch_alias: None,
};
let resolved = resolver::resolve(&request)
@@ -1152,6 +1154,7 @@ mod tests {
locked_package_names: IndexSet::new(),
locked_packages: Vec::new(),
block_abandoned: false,
+ root_branch_alias: None,
};
let resolved = resolver::resolve(&request)
diff --git a/crates/mozart/src/commands/update.rs b/crates/mozart/src/commands/update.rs
index 2853fc8..c4ebdf7 100644
--- a/crates/mozart/src/commands/update.rs
+++ b/crates/mozart/src/commands/update.rs
@@ -169,6 +169,28 @@ pub struct UpdateChange {
///
/// Recognizes "stable", "RC", "beta", "alpha", "dev" (case-insensitive).
/// Defaults to `Stability::Stable` for unrecognized values.
+/// Resolve the root composer.json's `extra.branch-alias` against the root's
+/// `version` field. Returns the alias target (e.g. `"2.0-dev"`) when both
+/// `version` and a matching `branch-alias` entry are present, mirroring
+/// Composer's `RootPackageLoader` branch-alias detection on the root package.
+/// `None` for projects without a `version` or without a matching alias entry.
+fn extract_root_branch_alias(
+ composer_json: &mozart_core::package::RawPackageData,
+) -> Option<String> {
+ let version = composer_json.version.as_deref()?;
+ if version.is_empty() {
+ return None;
+ }
+ composer_json
+ .extra_fields
+ .get("extra")
+ .and_then(|extra| extra.get("branch-alias"))
+ .and_then(|aliases| aliases.as_object())
+ .and_then(|map| map.get(version))
+ .and_then(|v| v.as_str())
+ .map(String::from)
+}
+
fn parse_minimum_stability(s: &str) -> Stability {
package::Stability::parse(s)
}
@@ -1136,6 +1158,7 @@ pub async fn run(
locked_package_names,
locked_packages,
block_abandoned,
+ root_branch_alias: extract_root_branch_alias(&composer_json),
};
// Step 6: Print header and run resolver
@@ -2274,6 +2297,7 @@ mod tests {
locked_package_names: IndexSet::new(),
locked_packages: Vec::new(),
block_abandoned: false,
+ root_branch_alias: None,
};
let resolved = resolve(&request).await.expect("Resolution should succeed");