internal/dload
DLoad simplifies downloading and managing binary artifacts for PHP projects. Automatically fetch tools like RoadRunner, Temporal, and custom binaries at pinned versions, ensuring consistent, cross-platform dev environments without committing binaries to version control.
post-install-cmd/post-update-cmd hooks for automated dependency management..tgz/.tar) — DLoad now handles tools distributed as tarballs, not just raw binaries and PHARs. This widens coverage to most Go/Node/Rust release artifacts that previously needed bespoke curl | tar scripting.<package>#<id> addressing) — the internal-registry pattern previously recommended as a hand-rolled shared package is now first-class, with shadowed-entry reporting.!=/<>, v prefixes, ≥5-part versions, SemVer build metadata, revised pre-release ordering, and long-number comparison.composer install — treat as a regression-risk surface, not a cosmetic change.post-install script support. Integration remains <5 minutes:
{
"scripts": {
"post-install-cmd": "dload get --no-interaction",
"post-update-cmd": "dload get --no-interaction"
}
}
php artisan dload:install).!=/<>, v prefix, 5+ parts, build metadata, pre-release ordering). Existing constraints may resolve to a different artifact version after upgrade without any config change. Mitigate by capturing resolved versions pre- and post-upgrade and diffing them in CI before rollout.<software> entries addressable as <package>#<id>. This is a supply-chain surface — a transitive dependency can influence what binary your build downloads. Shadowed entries are reported, which helps, but TPMs need an explicit allowlist and a review step for packages that ship definitions..tgz/.tar support introduces classic extraction risks — path traversal, unexpected permissions, nested directory layouts producing binaries in the wrong place, and symlink handling. Validate extraction targets and post-extract binary existence; prefer pinned, checksummed archives.dload init or generating dload.xml from a PHP config array.asset-pattern matching plus new universal-macOS and x86-64 microarchitecture ranking reduces arch-mismatch risk. Still validate supported platforms upfront (e.g., no ARM builds for a given tool).type="phar" vs. type="binary" can unpack executables or skip PHARs. Documentation now also clarifies that OS packages are skipped when a binary is expected and how deep fallback goes..tgz/.tar and therefore newly addressable?<software> entries? Is there an allowlist, and who reviews additions? How are shadowed-entry warnings surfaced in CI?roadrunner:^2025.1) or allow flexibility? How should CI handle missing binaries — fail fast or retry?sha256 checks, and scan PHARs (e.g., phar.io/phar). Confirm token-scoping fixes are in place for any private repositories.php artisan dload:install).bootstrap/app.php before Laravel initializes.velox.toml, whose config pipeline was refactored), Temporal (PHP SDK downloads), PHAR tooling (Psalm, PHPStan, Pest), plus newly serviceable tarball-distributed tooling.dload.xml.dload get locally, then in CI, exercising the refactored installer pipeline.curl/wget/tar scripts.type="phar" for PHP-only tools.^1.19; read 1.17→1.19 changelogs; scaffold via ./vendor/bin/dload init if starting fresh.<repositories>
<repository type="gitlab" url="https://git.internal.example.com/api/v4" />
</repositories>
<actions>
<download software="rr" version="^2025.1" type="binary" extract-path="./bin" />
<download software="internal-tool#cli" version="^2.4" type="archive" extract-path="./bin" />
<download software="temporal" version="^1.3" type="phar" />
</actions>
Consult the references/ docs (from 1.16.6) plus the new note on OS-package skipping and fallback depth to pick the correct type, asset-pattern, and archive handling per tool.post-install-cmd/post-update-cmd → dload get --no-interaction); optionally add an Artisan wrapper command.composer install --no-interaction && dload get --no-interaction) and verify binaries land in PATH or the expected extract path; add a resolved-version diff assertion and a checksum check.dload.xml can diverge across environments. Commit it to Git; consider generating it from a PHP config array via a Composer script.dload.xml edits. Automate via a script that parses release metadata and rewrites constraints; use @beta/@rc stability flags for pre-release tooling — now more expressive given hyphen ranges, !=, and build-metadata support.<software> blocks into a shared Composer package as soon as more than a handful of tools exist. 1.19.0 makes this the supported path, but it also means registry changes now arrive via Composer updates and need review discipline.dload.xml, the shared registry package, the package allowlist, and the upgrade calendar. The allowlist is a new responsibility introduced by Composer-distributed definitions.composer install, the on-call owner is typically the build/DevOps engineer, not application developers — make that explicit in the runbook.references/ structure; the old single-file skill path is a dead reference. Add a short internal note on archive extraction and self-hosted repositories, since neither existed at 1.16.6.temp-dir), self-hosted/mirrored repositories (newly supported), and pre-baking binaries into CI base images so dload get becomes a cache hit.dload.xml remain the scaling lever — pin them so N environments converge on identical tool versions, especially given the matcher rework.<software> entry that shadows or redirects a download. Enforce a package allowlist, review shadowed-entry warnings, and pin repository URLs.asset-pattern per platform; validate in a multi-arch CI matrix.sha256 validation and, for PHARs, malware scanning. This gap is unchanged and now more consequential as more artifact types are supported.references/. Update onboarding materials in the same pass.How can I help you explore Laravel packages today?