diff options
Diffstat (limited to 'crates/mozart/src/commands/dependency.rs')
| -rw-r--r-- | crates/mozart/src/commands/dependency.rs | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/crates/mozart/src/commands/dependency.rs b/crates/mozart/src/commands/dependency.rs index 5073be0..f2856d9 100644 --- a/crates/mozart/src/commands/dependency.rs +++ b/crates/mozart/src/commands/dependency.rs @@ -59,12 +59,35 @@ pub fn load_packages(working_dir: &Path, locked: bool) -> Result<Vec<PackageInfo let composer_json_path = working_dir.join("composer.json"); // Load locked / installed packages - let mut packages: Vec<PackageInfo> = if locked || lock_path.exists() { + let mut packages: Vec<PackageInfo> = if locked { load_from_lockfile(&lock_path)? } else { - load_from_installed(working_dir)? + let installed = load_from_installed(working_dir); + match installed { + Ok(pkgs) if !pkgs.is_empty() => pkgs, + _ => { + if lock_path.exists() { + load_from_lockfile(&lock_path)? + } else { + vec![] + } + } + } }; + // Add platform packages (php, ext-*, lib-*, composer-*-api) + let platform = mozart_core::platform::detect_platform(); + for pp in &platform { + packages.push(PackageInfo { + name: pp.name.clone(), + version: pp.version.clone(), + require: BTreeMap::new(), + require_dev: BTreeMap::new(), + conflict: BTreeMap::new(), + is_root: false, + }); + } + // Add the root package (composer.json) as a synthetic entry if composer_json_path.exists() && let Ok(root) = mozart_core::package::read_from_file(&composer_json_path) |
