From 2ad57b7efb685040b24d93aab5b81ddfbd0ebefb Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 5 May 2026 15:12:57 +0900 Subject: feat(core): add Composer struct mirroring requireComposer/tryComposer Introduce mozart_core::composer::Composer with require()/try_load() constructors and a config() accessor, modelled on PHP Composer's BaseCommand::requireComposer / tryComposer. ComposerConfig and composer_home move into mozart-core so Composer::load can resolve placeholders consistently. Migrate dump-autoload, archive, exec and run-script away from ad-hoc composer.json reads. exec and run-script now fail when composer.json is missing instead of silently falling back to "vendor/bin", matching the upstream requireComposer contract. Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/mozart/src/commands/dump_autoload.rs | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) (limited to 'crates/mozart/src/commands/dump_autoload.rs') diff --git a/crates/mozart/src/commands/dump_autoload.rs b/crates/mozart/src/commands/dump_autoload.rs index c35690b..ec25b54 100644 --- a/crates/mozart/src/commands/dump_autoload.rs +++ b/crates/mozart/src/commands/dump_autoload.rs @@ -66,20 +66,9 @@ pub async fn execute( let vendor_dir = working_dir.join("vendor"); let dev_mode = !args.no_dev; - // B: Read config-driven defaults from composer.json - let composer_json_path = working_dir.join("composer.json"); - let mut composer_config = super::config::ComposerConfig::defaults(); - if composer_json_path.exists() - && let Ok(content) = std::fs::read_to_string(&composer_json_path) - && let Ok(value) = serde_json::from_str::(&content) - && let Some(cfg_obj) = value.get("config").and_then(|v| v.as_object()) - { - let overrides: std::collections::BTreeMap = cfg_obj - .iter() - .map(|(k, v)| (k.clone(), v.clone())) - .collect(); - composer_config.merge(&overrides); - } + // B: Load Composer state (composer.json is required for dump-autoload) + let composer = mozart_core::composer::Composer::require(&working_dir)?; + let composer_config = composer.config(); let optimize = args.optimize || composer_config -- cgit v1.3.1