aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src/commands/archive.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-02-22 00:37:54 +0900
committernsfisis <nsfisis@gmail.com>2026-02-22 00:37:54 +0900
commit0a8e5935e6305819bb02d8c69e2f046ff397913a (patch)
treee5a288e679477b1603d7989e986ca22bbe590aa4 /crates/mozart/src/commands/archive.rs
parentb5af594fec7da72b15c9a202c641af0494db6355 (diff)
downloadphp-mozart-0a8e5935e6305819bb02d8c69e2f046ff397913a.tar.gz
php-mozart-0a8e5935e6305819bb02d8c69e2f046ff397913a.tar.zst
php-mozart-0a8e5935e6305819bb02d8c69e2f046ff397913a.zip
refactor(workspace): split monolithic crate into 6 workspace crates
Extract modules from the single `mozart` crate into 5 focused library crates to improve compilation parallelism and architectural clarity: - mozart-constraint: version constraint parser (independent) - mozart-core: base types, console, validation, platform utilities - mozart-archiver: archive creation (tar, zip, bzip2) - mozart-registry: Packagist API, cache, resolver, downloader, lockfile - mozart-autoload: autoloader generation and PHP scanner Refactor Console::from_cli and build_cache_config to accept primitive args instead of &Cli to break circular dependencies. Introduce [workspace.dependencies] for centralized version management. Remove 9 unused direct dependencies from the CLI crate. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'crates/mozart/src/commands/archive.rs')
-rw-r--r--crates/mozart/src/commands/archive.rs19
1 files changed, 10 insertions, 9 deletions
diff --git a/crates/mozart/src/commands/archive.rs b/crates/mozart/src/commands/archive.rs
index 9be45e9..687e116 100644
--- a/crates/mozart/src/commands/archive.rs
+++ b/crates/mozart/src/commands/archive.rs
@@ -85,9 +85,9 @@ impl Drop for PackageMeta {
pub fn execute(
args: &ArchiveArgs,
cli: &super::Cli,
- console: &crate::console::Console,
+ console: &mozart_core::console::Console,
) -> anyhow::Result<()> {
- use crate::archiver::{
+ use mozart_archiver::{
ArchiveFormat, collect_archivable_files, create_archive, generate_archive_filename,
parse_composer_excludes, parse_gitattributes, parse_gitignore_pattern,
self_exclusion_patterns,
@@ -154,7 +154,7 @@ pub fn execute(
if !composer_json_path.exists() {
anyhow::bail!("No composer.json found in {}", working_dir.display());
}
- let root = crate::package::read_from_file(&composer_json_path)?;
+ let root = mozart_core::package::read_from_file(&composer_json_path)?;
let (archive_name, archive_excludes) = read_archive_config(&composer_json_path)?;
let version = root
.extra_fields
@@ -243,11 +243,11 @@ fn resolve_remote_package(
package_name: &str,
version_constraint: Option<&str>,
) -> anyhow::Result<PackageMeta> {
- use crate::package::Stability;
- use crate::version::find_best_candidate;
+ use mozart_core::package::Stability;
+ use mozart_registry::version::find_best_candidate;
// Fetch versions from Packagist
- let versions = crate::packagist::fetch_package_versions(package_name, None)?;
+ let versions = mozart_registry::packagist::fetch_package_versions(package_name, None)?;
if versions.is_empty() {
anyhow::bail!("No versions found for package \"{}\"", package_name);
}
@@ -292,11 +292,12 @@ fn resolve_remote_package(
let temp_dir = temp_base.join(&unique);
std::fs::create_dir_all(&temp_dir)?;
- let bytes = crate::downloader::download_dist(&dist.url, dist.shasum.as_deref(), None, None)?;
+ let bytes =
+ mozart_registry::downloader::download_dist(&dist.url, dist.shasum.as_deref(), None, None)?;
match dist.dist_type.as_str() {
- "zip" => crate::downloader::extract_zip(&bytes, &temp_dir)?,
- "tar" | "tar.gz" | "tgz" => crate::downloader::extract_tar_gz(&bytes, &temp_dir)?,
+ "zip" => mozart_registry::downloader::extract_zip(&bytes, &temp_dir)?,
+ "tar" | "tar.gz" | "tgz" => mozart_registry::downloader::extract_tar_gz(&bytes, &temp_dir)?,
other => {
let _ = std::fs::remove_dir_all(&temp_dir);
anyhow::bail!("Unsupported dist type: {}", other);