aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src/commands/browse.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/browse.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/browse.rs')
-rw-r--r--crates/mozart/src/commands/browse.rs24
1 files changed, 12 insertions, 12 deletions
diff --git a/crates/mozart/src/commands/browse.rs b/crates/mozart/src/commands/browse.rs
index 0a89ae7..d662ec0 100644
--- a/crates/mozart/src/commands/browse.rs
+++ b/crates/mozart/src/commands/browse.rs
@@ -21,7 +21,7 @@ pub struct BrowseArgs {
pub fn execute(
args: &BrowseArgs,
cli: &super::Cli,
- console: &crate::console::Console,
+ console: &mozart_core::console::Console,
) -> anyhow::Result<()> {
let working_dir = match &cli.working_dir {
Some(dir) => PathBuf::from(dir),
@@ -36,7 +36,7 @@ pub fn execute(
"No composer.json found in the current directory and no package specified."
);
}
- let root = crate::package::read_from_file(&composer_json)?;
+ let root = mozart_core::package::read_from_file(&composer_json)?;
vec![root.name.clone()]
} else {
args.packages.clone()
@@ -57,7 +57,7 @@ pub fn execute(
None => {
console.info(&format!(
"{}",
- crate::console::warning(&format!(
+ mozart_core::console::warning(&format!(
"No URL found for package \"{}\".",
package_name
))
@@ -84,7 +84,7 @@ fn resolve_url(
// 1. Check root package (composer.json)
let composer_json = working_dir.join("composer.json");
if composer_json.exists()
- && let Ok(root) = crate::package::read_from_file(&composer_json)
+ && let Ok(root) = mozart_core::package::read_from_file(&composer_json)
&& root.name.eq_ignore_ascii_case(package_name)
&& let Some(url) = extract_url_from_root(&root, prefer_homepage)
{
@@ -94,7 +94,7 @@ fn resolve_url(
// 2. Check lock file (composer.lock)
let lock_path = working_dir.join("composer.lock");
if lock_path.exists()
- && let Ok(lock) = crate::lockfile::LockFile::read_from_file(&lock_path)
+ && let Ok(lock) = mozart_registry::lockfile::LockFile::read_from_file(&lock_path)
{
let all_packages = lock
.packages
@@ -109,7 +109,7 @@ fn resolve_url(
}
// 3. Fall back to Packagist API
- match crate::packagist::fetch_package_versions(package_name, None) {
+ match mozart_registry::packagist::fetch_package_versions(package_name, None) {
Ok(versions) => {
// Find the latest stable version (first non-dev, or fallback to first)
let best = versions
@@ -129,7 +129,7 @@ fn resolve_url(
// ─── URL extraction ───────────────────────────────────────────────────────────
fn extract_url_from_locked(
- pkg: &crate::lockfile::LockedPackage,
+ pkg: &mozart_registry::lockfile::LockedPackage,
prefer_homepage: bool,
) -> Option<String> {
if prefer_homepage {
@@ -161,7 +161,7 @@ fn extract_url_from_locked(
}
fn extract_url_from_root(
- root: &crate::package::RawPackageData,
+ root: &mozart_core::package::RawPackageData,
prefer_homepage: bool,
) -> Option<String> {
if prefer_homepage {
@@ -187,7 +187,7 @@ fn extract_url_from_root(
}
fn extract_url_from_packagist(
- pkg: &crate::packagist::PackagistVersion,
+ pkg: &mozart_registry::packagist::PackagistVersion,
prefer_homepage: bool,
) -> Option<String> {
if prefer_homepage {
@@ -278,14 +278,14 @@ mod tests {
source_url: Option<&str>,
homepage: Option<&str>,
support_source: Option<&str>,
- ) -> crate::lockfile::LockedPackage {
+ ) -> mozart_registry::lockfile::LockedPackage {
let support = support_source.map(|s| serde_json::json!({"source": s}));
- let source = source_url.map(|url| crate::lockfile::LockedSource {
+ let source = source_url.map(|url| mozart_registry::lockfile::LockedSource {
source_type: "git".to_string(),
url: url.to_string(),
reference: None,
});
- crate::lockfile::LockedPackage {
+ mozart_registry::lockfile::LockedPackage {
name: "vendor/package".to_string(),
version: "1.0.0".to_string(),
version_normalized: None,