Skip to content

Add flyctl to the default software registry #139

Open

Description

@phenaproxima

Hi! Me again. (I'm the maintainer of Drupal CMS, and we just added dload to our direct dependencies. :) )

One of the things we're trying to do is make it easier to deploy Drupal CMS sites from local environments to remote hosts. We're looking into supporting fly.io out of the box. To do that, we'd need access to the flyctl utility. It'd be really helpful if we could call dload get flyctl to download it; would you be willing to add it to the default registry? I'm happy to submit a PR; flyctl releases on GitHub (https://github.com/superfly/flyctl/releases).

Activity

  1. roxblnfk commented on Oct 9, 2026

    @roxblnfk
    Member

    Sure, let's add it! A PR is welcome; flyctl releases have stable asset names, so the entry should be simple.

    I'm also planning to let packages extend the registry from the composer.json of direct dependencies: #140. Drupal CMS could then ship entries for the binaries it needs without waiting on DLoad releases. Would that be useful for you?

  2. phenaproxima commented on Oct 9, 2026

    @phenaproxima
    ContributorAuthor

    I think being able to define the binaries in composer.json might be very useful to us!

  3. added a commit that references this issue on Oct 10, 2026
    7ee13f0
  4. roxblnfk commented on Oct 12, 2026

    @roxblnfk
    Member

    @phenaproxima, DLoad v1.19.0 is out with the registry extension from #140: a Composer package can now ship registry entries of its own. Would you like to try it with flyctl in Drupal CMS? Drupal CMS would then own the entry, fly binary name included, and add or change tools without waiting for DLoad releases.

    1. Put the entry from #142 into an XML file inside the package, e.g. dload.xml at its root. It uses the dload.xml format, so the IDE validates it against the schema. Only the <registry> section is read.

    <?xml version="1.0"?>
    <dload xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/php-internal/dload/refs/heads/1.x/dload.xsd">
        <registry>
            <software name="flyctl" alias="flyctl"
                      description="Command line tools for fly.io services"
                      homepage="https://fly.io">
                <repository type="github" uri="superfly/flyctl" asset-pattern="/^flyctl_.*/" />
                <binary name="fly" pattern="/^flyctl(?:\.exe)?$/" version-command="version" />
                <file pattern="/^wintun\.dll$/" />
            </software>
        </registry>
    </dload>

    2. Point to it from the package's composer.json:

    {
        "extra": {
            "dload": {
                "registry": "dload.xml"
            }
        }
    }

    3. Sites get it with no setup. DLoad reads vendor/composer/installed.json, so dload get flyctl or <download software="flyctl" /> works in any project where that package is in require or require-dev, or is the root package itself. dload software lists the entry with the package name as its source.

    A few rules worth knowing:

    • Only the root package and its direct dependencies are read. A transitive dependency cannot add binaries.
    • dload.xml must ship with the package: keep it out of export-ignore in .gitattributes.
    • A project's own dload.xml and the official registry take precedence over package entries. vendor/package#flyctl always picks your entry explicitly.
    • version-command must be a single option or version (yours is fine), and binary names must be plain file names.

    Details: Software from Composer Packages.

    If everything works as expected, we can close #142 in favour of the entry in Drupal CMS. And if something doesn't fit your setup, let me know here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions