aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--crates/mozart/src/commands/reinstall.rs50
1 files changed, 47 insertions, 3 deletions
diff --git a/crates/mozart/src/commands/reinstall.rs b/crates/mozart/src/commands/reinstall.rs
index c6df20d..1665786 100644
--- a/crates/mozart/src/commands/reinstall.rs
+++ b/crates/mozart/src/commands/reinstall.rs
@@ -1,4 +1,6 @@
use clap::Args;
+use mozart_core::console_format;
+use mozart_core::package;
use std::path::PathBuf;
#[derive(Args)]
@@ -134,6 +136,21 @@ pub async fn execute(
filter_by_names(&candidates, &args.packages)
};
+ // Emit per-pattern warnings for patterns that matched no installed packages.
+ if has_packages {
+ for pattern in &args.packages {
+ let matched = candidates
+ .iter()
+ .any(|pkg| glob_matches(&pattern.to_lowercase(), &pkg.name.to_lowercase()));
+ if !matched {
+ console.info(&console_format!(
+ "<warning>Pattern \"{}\" does not match any currently installed packages.</warning>",
+ pattern
+ ));
+ }
+ }
+ }
+
if selected.is_empty() {
eprintln!("Found no packages to reinstall, aborting.");
std::process::exit(1);
@@ -232,17 +249,44 @@ pub async fn execute(
console.info("Generating autoload files");
let dev_mode = !args.no_dev && installed.dev;
+
+ // SAFETY: single-threaded at this point; no concurrent env access
+ unsafe {
+ std::env::set_var("COMPOSER_DEV_MODE", if dev_mode { "1" } else { "0" });
+ }
+
let suffix = lock.content_hash.clone();
+ // Read composer.json config section for autoloader defaults.
+ let composer_path = working_dir.join("composer.json");
+ let raw = package::read_from_file(&composer_path)?;
+ let project_config = raw.extra_fields.get("config");
+ let config_optimize = project_config
+ .and_then(|c| c.get("optimize-autoloader"))
+ .and_then(|v| v.as_bool())
+ .unwrap_or(false);
+ let config_classmap_auth = project_config
+ .and_then(|c| c.get("classmap-authoritative"))
+ .and_then(|v| v.as_bool())
+ .unwrap_or(false);
+ let config_apcu = project_config
+ .and_then(|c| c.get("apcu-autoloader"))
+ .and_then(|v| v.as_bool())
+ .unwrap_or(false);
+
+ let optimize = args.optimize_autoloader || config_optimize;
+ let classmap_auth = args.classmap_authoritative || config_classmap_auth;
+ let apcu = args.apcu_autoloader || args.apcu_autoloader_prefix.is_some() || config_apcu;
+
let _result =
mozart_autoload::autoload::generate(&mozart_autoload::autoload::AutoloadConfig {
project_dir: working_dir.to_path_buf(),
vendor_dir: vendor_dir.to_path_buf(),
dev_mode,
suffix,
- classmap_authoritative: args.classmap_authoritative,
- optimize: args.optimize_autoloader,
- apcu: args.apcu_autoloader,
+ classmap_authoritative: classmap_auth,
+ optimize,
+ apcu,
apcu_prefix: args.apcu_autoloader_prefix.clone(),
strict_psr: false,
strict_ambiguous: false,