aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates
AgeCommit message (Collapse)Author
2026-02-21feat(global): implement command to run subcommands in global Composer dirnsfisis
Resolves global home from $COMPOSER_HOME, $XDG_CONFIG_HOME, or $HOME/.config/composer, then re-dispatches the given subcommand with --working-dir set to that path. Forwards all global CLI flags and accepts hyphen-prefixed trailing arguments. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(check-platform-reqs): implement command to verify PHP platform requirementsnsfisis
Collects platform requirements (php, ext-*, lib-*, composer-*-api) from lock file, installed.json, and root composer.json, then compares them against the detected PHP environment. Supports text/JSON output and exit codes 0 (pass), 1 (failed), 2 (missing). Extracts shared platform detection into a new platform.rs module, reused by both check-platform-reqs and show --platform. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21fix(licenses): match Composer text output formatnsfisis
Add "Dependencies:" label and remove column headers/separator from text output to align with Composer's licenses command behavior. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(diagnose): implement diagnose command to check system health and ↵nsfisis
connectivity Adds 10 diagnostic checks: Mozart version, HTTPS/HTTP Packagist connectivity, GitHub API, HTTP proxy detection, composer.json validation, composer.lock freshness, git availability/version, disk free space, and cache directory writability. Exit codes: 0=clean, 1=warnings, 2=errors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(run-script): implement run-script command to execute composer.json scriptsnsfisis
Support shell commands, @php/@composer/@putenv prefixes, script references with circular detection, @additional_args/@no_additional_args, timeout handling, and COMPOSER_DEV_MODE. PHP callbacks are skipped with a warning since Mozart cannot execute PHP class methods. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(audit): implement audit command to check packages for security ↵nsfisis
vulnerabilities Query Packagist security advisories API for known vulnerabilities affecting installed or locked packages, with version constraint matching, severity filtering, abandoned package detection, and multiple output formats (table, plain, json, summary). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(create-project): implement create-project command to scaffold new ↵nsfisis
projects from packages Replaces the todo\!() stub with a full implementation that parses the package argument, resolves the best matching version from Packagist, downloads and extracts the dist archive into a target directory, removes VCS metadata, replaces self.version constraints, and runs dependency resolution and installation via the existing resolver and install infrastructure. Includes version constraint matching (caret, tilde, wildcard, comparison operators) and comprehensive unit tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(reinstall): implement reinstall command to re-download specified packagesnsfisis
Replaces the todo\!() stub with a full implementation that reads installed.json and composer.lock, selects packages by name patterns (with glob/wildcard support) or --type filter, removes vendor directories, re-downloads from dist, and regenerates the autoloader. Supports --dry-run, --no-dev, and all standard autoloader flags. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(status): implement status command to detect local vendor modificationsnsfisis
Downloads original dist archives, hashes files with SHA-1, and compares against installed copies to detect modified, added, and removed files. Supports verbose file listing and exits with code 1 when changes found. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(exec): implement exec command to run vendor binariesnsfisis
Add binary execution from vendor/bin/ with --list enumeration, root package bin entries marked as (local), configurable bin-dir resolution with {$vendor-dir} placeholder support, .bat filtering, and PATH prepending. Add bin field to RawPackageData. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(bump): implement bump command to raise version constraints to installed ↵nsfisis
versions Adds the version_bumper module for constraint manipulation (caret, tilde, wildcard, GTE, OR constraints, stability flags, dev versions) and wires it into the bump command with --dev-only, --no-dev-only, --dry-run flags, package filtering, lock file freshness checks, and content-hash updates. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(browse): implement browse command to open package URLs in browsernsfisis
Resolves URLs from composer.json, composer.lock, or Packagist API with priority: support.source > source.url > homepage. Supports --homepage flag, --show for printing URLs, and cross-platform browser opening. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(suggests): implement suggests command with filtering and multiple ↵nsfisis
output modes Replaces the todo\!() stub with full implementation that collects suggested packages from lock file, installed packages, and root composer.json. Supports --no-dev, --all, --list, --by-package, --by-suggestion flags and package name filtering. Filters out already-installed and platform packages. Includes 11 tests covering collection, filtering, and edge cases. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(fund): implement fund command with text and JSON outputnsfisis
Display funding links from installed packages grouped by vendor, reading from lock file (preferred) or installed.json. Includes GitHub URL rewriting to sponsor links. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(licenses): implement licenses command with text, JSON, and summary outputnsfisis
Support listing dependency licenses from installed packages or lock file with --no-dev filtering, format validation, and sorted output. Includes unit tests for license extraction/counting and integration tests using temp dirs for both installed and locked package sources. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(cache): add filesystem-backed cache with TTL expiration and size-limited GCnsfisis
Implement a cache module with CacheConfig and Cache structs supporting read/write (string and binary), atomic writes via temp+rename, TTL-based expiration, and size-limited garbage collection. Wire the repo cache into packagist.rs and resolver.rs for API response caching, and the files cache into downloader.rs for dist archive caching. Implement the clear-cache command with full clear and --gc modes. All existing call sites pass None for backward compatibility. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(autoload): add classmap scanning, optimize, APCu, platform checks, and ↵nsfisis
strict-psr Add PHP file scanner (php_scanner.rs) with class/interface/trait/enum detection, comment/string/heredoc stripping, and PSR-4/PSR-0 validation. Extend autoload generation with: classmap directory scanning, --optimize mode (PSR-4/PSR-0 to classmap), --classmap-authoritative, --apcu caching with optional prefix, platform_check.php generation, and --strict-psr violation reporting. Wire new options through dump-autoload, install, require, update, and remove commands. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(require,remove): add interactive search and dependency-aware partial ↵nsfisis
updates Implement Phase 5.5 of the require/remove commands: - Interactive package search when no packages specified on CLI (require) - --with-dependencies/--with-all-dependencies partial update for require - --with-all-dependencies/--no-update-with-dependencies for remove - --minimal-changes support for remove - Extract search API types and logic from search.rs into packagist.rs for reuse by both search and require commands Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(config): implement write mode with set, unset, editor, and validationnsfisis
Add full config write support: setting/unsetting config keys with type validation, package properties, repository management, extra/suggest fields, dotted subkeys, --editor mode, --json/--merge/--append flags, and enhanced read mode for repos/extra/suggest/package properties. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(update): add wildcard expansion, dependency traversal, minimal-changes, ↵nsfisis
and interactive mode Implement Phase 5.4 update command extensions: - Wildcard package matching (e.g. symfony/*) against the lock file - --with-dependencies expands update set to include direct deps - --with-all-dependencies expands to full transitive dependency tree - --minimal-changes pins all packages to locked versions unless constraints changed - --interactive prompts user to select packages for update (y/n per package) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(show): implement --tree, --latest, --outdated, --available, --platform, ↵nsfisis
and --format=json Replace stub messages with full implementations for all show command extensions: dependency tree rendering from lock file, latest version fetching from Packagist, outdated filtering with update classification, available versions listing, platform package detection via PHP CLI, and JSON output format across all modes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(install): add InstallConfig, platform warnings, and download progressnsfisis
Replace positional boolean parameters in install_from_lock with a structured InstallConfig. Add platform requirement warnings, download progress display, classmap-authoritative autoloader support, and prefer-source detection across install/update/require/remove commands. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(resolver): add inline and branch alias supportnsfisis
Inline aliases ("1.0.x-dev as 1.0.0") now use the right side for constraint matching via parse_for_constraint(), while parse() keeps the left side for version identity. Branch aliases from extra.branch-alias metadata create synthetic dev-stability entries in the resolver, allowing constraints like ^2.0 to match dev-master aliased to 2.x-dev. Real releases take precedence via entry().or_insert(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(depends): implement depends and prohibits commands with shared ↵nsfisis
dependency logic Add the `depends` (why) and `prohibits` (why-not) commands that query the dependency graph to answer "which packages require X?" and "which packages prevent version Y of X from being installed?" respectively. Introduces the shared `dependency` module with package loading from lock file or installed.json, forward/inverted dependency graph walking, recursive traversal with cycle detection, and table/tree output formatters. Adds `conflict` field to LockedPackage for conflict-based prohibition detection, updating all struct literals across install, remove, require, and update test helpers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(config): implement config command with read-mode supportnsfisis
Add ComposerConfig with Composer-compatible defaults, config merging from global/local JSON files, placeholder resolution ({$vendor-dir}, {$home}, {$cache-dir}), single-key lookup, --list output, and 21 tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(outdated): implement outdated command with version comparison and filteringnsfisis
Replaces the todo\!() stub with full implementation that loads installed or locked packages, fetches latest versions from Packagist, classifies updates as semver-compatible (red) or semver-incompatible (yellow), and supports all flags: --direct, --locked, --no-dev, --major-only, --minor-only, --patch-only, --format json, --strict, and --ignore. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(search): implement search command with Packagist API integrationnsfisis
Adds full implementation of the `search` command, querying the Packagist search API with pagination, --only-name/--only-vendor filtering, --type filtering, and text/json output formats. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(remove): implement remove command with full resolve/lock/install pipelinensfisis
Replace the todo\!() stub with a complete implementation that handles package removal from require/require-dev with auto-detection, supports --dev, --dry-run, --no-update, --no-install flags, and runs the full dependency resolution pipeline after modification. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(require): complete require command with resolve/lock/install pipelinensfisis
Replace the stub "not yet implemented" message with the full pipeline: resolve dependencies, generate lock file, report changes, write lock, and install packages. Handles --no-update, --no-install, and --dry-run flags. Reuses compute_update_changes from update.rs for change reporting. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(update): implement update command with resolver-based dependency updatesnsfisis
Add full update command supporting --lock (content-hash refresh only), --dry-run, --no-install, --no-dev, --prefer-stable, --prefer-lowest, and partial updates (named packages). Extract install_from_lock() from install.rs for shared use. Add Stability::parse() to package.rs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(lockfile): generate lock file from resolver resultsnsfisis
Add lock file generation pipeline that converts resolved packages into a complete composer.lock structure. Extends PackagistVersion with 15 metadata fields (authors, license, autoload, etc.), implements BFS-based dev package classification, platform requirements extraction, and content-hash computation. Cleans up unused skip_serializing_if attributes on the Deserialize-only PackagistVersion struct. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(resolver): integrate pubgrub dependency resolvernsfisis
Add dependency resolution module using pubgrub v0.3.0 to convert Composer-style constraints into range-based version solving. Includes ComposerVersion type with stability ordering, MozartProvider implementing DependencyProvider, platform package handling, stability filtering, and conflict support via complement ranges. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(validate): implement validate command with composer.json checksnsfisis
Check JSON validity, name format, license presence, version field, deprecated types, require/require-dev overlap, provide/replace overlap, commit references, empty PSR prefixes, minimum-stability, and lock file freshness. Supports --strict, --no-check-publish, --no-check-lock, --no-check-version flags with Composer-compatible exit codes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(show): implement show command with installed, locked, and self modesnsfisis
Replaces the todo!() stub with full implementation supporting: - List mode with aligned columns (name, version, description) - Detail mode for single package inspection - --locked mode reading from composer.lock - --self mode reading from composer.json - --no-dev, --direct, --name-only, --path filtering - Wildcard pattern matching for package name filters - Graceful stubs for unimplemented options (--tree, --available, etc.) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(autoload): generate Composer-compatible PHP autoloader filesnsfisis
Implement autoloader generation that produces all standard Composer autoloader files (autoload.php, autoload_real.php, autoload_static.php, autoload_psr4.php, autoload_namespaces.php, autoload_classmap.php, autoload_files.php, installed.php) plus embeds ClassLoader.php, InstalledVersions.php, and LICENSE from the Composer submodule. Wire into the install command (gated by --no-autoloader) and replace the todo!() in dump-autoload with a working implementation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(install): implement install command with lock-based package installationnsfisis
Replaces the todo!() stub with a full implementation that reads composer.lock, computes install/update/skip/remove operations by comparing against vendor/composer/installed.json, downloads packages via the downloader module, and writes the updated installed registry. Handles edge cases: missing lock file, stale lock file, no dist info, empty packages, --dry-run, --no-dev, deprecated flags, and vendor directory cleanup after removals. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(core): add version constraint, lockfile, installed registry, and ↵nsfisis
downloader modules Phase 1 infrastructure for the install command: - constraint: Composer-compatible version parsing and constraint matching (caret, tilde, wildcard, hyphen range, OR/AND combinators) - lockfile: composer.lock read/write with content-hash computation - installed: vendor/composer/installed.json registry (Composer 2.x format) - downloader: dist archive download with SHA-1 verification and zip/tar.gz extraction with top-level directory stripping Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21feat(require): implement require command with Packagist version resolutionnsfisis
Add the require command that updates composer.json with new package dependencies. When no version constraint is specified, the best version is resolved from the Packagist p2 API based on minimum-stability. Includes packagist API client, version comparison/stability detection, and RawPackageData deserialization support for roundtrip editing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14implement init commandnsfisis
2026-02-14define package types, which represent composer.jsonnsfisis
2026-02-14implement about commandnsfisis
2026-02-11change commands::*::execute() signaturesnsfisis
2026-02-11add more dependenciesnsfisis
2026-02-11enable workspacensfisis