aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--crates/mozart/src/commands/install.rs18
-rw-r--r--crates/mozart/tests/installer.rs2
2 files changed, 16 insertions, 4 deletions
diff --git a/crates/mozart/src/commands/install.rs b/crates/mozart/src/commands/install.rs
index 62a7d21..7a5ebe9 100644
--- a/crates/mozart/src/commands/install.rs
+++ b/crates/mozart/src/commands/install.rs
@@ -1204,9 +1204,21 @@ pub async fn run(
for line in &missing {
console.info(line);
}
- return Err(mozart_core::exit_code::bail_silent(
- mozart_core::exit_code::LOCK_FILE_INVALID,
- ));
+ // Mirrors `Composer\Installer::doInstall()` lines 749-756: when
+ // `config.allow-missing-requirements` is true, print the warnings
+ // but proceed with what the lock already covers instead of
+ // bailing with ERROR_LOCK_FILE_INVALID.
+ let allow_missing = root_pkg
+ .extra_fields
+ .get("config")
+ .and_then(|v| v.get("allow-missing-requirements"))
+ .and_then(|v| v.as_bool())
+ .unwrap_or(false);
+ if !allow_missing {
+ return Err(mozart_core::exit_code::bail_silent(
+ mozart_core::exit_code::LOCK_FILE_INVALID,
+ ));
+ }
}
let platform_problems = collect_install_platform_problems(
diff --git a/crates/mozart/tests/installer.rs b/crates/mozart/tests/installer.rs
index 7767f55..c411c10 100644
--- a/crates/mozart/tests/installer.rs
+++ b/crates/mozart/tests/installer.rs
@@ -261,7 +261,7 @@ installer_fixture!(install_dev);
installer_fixture!(install_dev_using_dist);
installer_fixture!(install_forces_reinstall_if_abandon_changes);
installer_fixture!(install_from_incomplete_lock);
-installer_fixture!(install_from_incomplete_lock_with_ignore, ignore);
+installer_fixture!(install_from_incomplete_lock_with_ignore);
installer_fixture!(install_from_lock_removes_package);
installer_fixture!(install_funding_notice);
installer_fixture!(install_funding_notice_env);