aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/mozart/src')
-rw-r--r--crates/mozart/src/commands/dependency.rs27
-rw-r--r--crates/mozart/src/commands/depends.rs6
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",