diff options
Diffstat (limited to 'crates/mozart/src/commands')
| -rw-r--r-- | crates/mozart/src/commands/dependency.rs | 27 | ||||
| -rw-r--r-- | crates/mozart/src/commands/depends.rs | 6 |
2 files changed, 31 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) diff --git a/crates/mozart/src/commands/depends.rs b/crates/mozart/src/commands/depends.rs index 673fd35..c65f775 100644 --- a/crates/mozart/src/commands/depends.rs +++ b/crates/mozart/src/commands/depends.rs @@ -44,6 +44,12 @@ pub async fn execute( // Verify the target package is known let target_known = packages.iter().any(|p| p.name.to_lowercase() == target); + if !target_known && mozart_core::platform::is_platform_package(&target) { + anyhow::bail!( + "Could not find platform package \"{}\". Is PHP available?", + args.package + ); + } if !target_known { anyhow::bail!( "Could not find package \"{}\" in your project", |
