Goal
Expose the user-facing drevops/vortex-tooling scripts as stable Composer binaries under vendor/bin/, namespaced with a vortex- prefix, and tighten the version constraint to patch-only.
Status
All prerequisite refactors have landed: the fetch rename, a dedicated import-db, the task runner, the export-db Lagoon backup, the container-image push split, require-tooling in the ahoy entrypoint, and the upload-db-s3 -> push-db-s3 rename (#2740). No open blockers; ready to implement.
Mechanism (verified)
Composer's native bin field flattens to vendor/bin/<basename> (no vortex/ subdirectory) and installs each binary as a realpath-resolving proxy, not a symlink, for both path-repository and Packagist installs. The proxy execs the real src/ script, so the internal "$(dirname "${BASH_SOURCE[0]}")/sibling" routing keeps working once scripts are exposed. Namespace via a filename prefix, not a subdirectory.
Naming
- Prefix every
src/* script with vortex- (all 42) and update every internal reference: the router dispatch targets, the . setup-ssh sources, and the task-<operation>-<platform> lookup.
update-vortex becomes vortex-update (avoids the doubled word).
Public surface
List only the user-facing entrypoints in the package bin array (15):
vortex-info, vortex-login, vortex-logout, vortex-doctor, vortex-reset
vortex-fetch-db, vortex-import-db, vortex-export-db
vortex-provision, vortex-deploy, vortex-notify, vortex-update
vortex-login-container-registry, vortex-push-db-image, vortex-task
Prefixed but not surfaced (routed leaves and helpers): every fetch-db-*, notify-*, deploy-*, and export-db-* implementation, import-db-file, provision-sanitize-db, the task-* implementations, setup-ssh, push-container-registry, and push-db-s3.
Remaining work
Override mechanism preserved: each binary proxy execs the patched src/vortex-* script, so cweagans/composer-patches customisations keep working.
Goal
Expose the user-facing
drevops/vortex-toolingscripts as stable Composer binaries undervendor/bin/, namespaced with avortex-prefix, and tighten the version constraint to patch-only.Status
All prerequisite refactors have landed: the
fetchrename, a dedicatedimport-db, thetaskrunner, theexport-dbLagoon backup, the container-imagepushsplit,require-toolingin the ahoy entrypoint, and theupload-db-s3->push-db-s3rename (#2740). No open blockers; ready to implement.Mechanism (verified)
Composer's native
binfield flattens tovendor/bin/<basename>(novortex/subdirectory) and installs each binary as a realpath-resolving proxy, not a symlink, for both path-repository and Packagist installs. The proxyexecs the realsrc/script, so the internal"$(dirname "${BASH_SOURCE[0]}")/sibling"routing keeps working once scripts are exposed. Namespace via a filename prefix, not a subdirectory.Naming
src/*script withvortex-(all 42) and update every internal reference: the router dispatch targets, the. setup-sshsources, and thetask-<operation>-<platform>lookup.update-vortexbecomesvortex-update(avoids the doubled word).Public surface
List only the user-facing entrypoints in the package
binarray (15):vortex-info,vortex-login,vortex-logout,vortex-doctor,vortex-resetvortex-fetch-db,vortex-import-db,vortex-export-dbvortex-provision,vortex-deploy,vortex-notify,vortex-updatevortex-login-container-registry,vortex-push-db-image,vortex-taskPrefixed but not surfaced (routed leaves and helpers): every
fetch-db-*,notify-*,deploy-*, andexport-db-*implementation,import-db-file,provision-sanitize-db, thetask-*implementations,setup-ssh,push-container-registry, andpush-db-s3.Remaining work
src/*tovortex-*and update internal dispatch references.binarray (15 entrypoints) to the tooling packagecomposer.json..ahoy.yml,.lagoon.yml, CI, hooks, and docs tovendor/bin/vortex-*.vortex-*bins fromscripts/vortex-tooling.sh(run from the ahoy entrypoint).composer.jsonconstraint^1.2.0to~1.2.0..circleci/vortex-test-common.yml.ahoy update-snapshotsand commit the regenerated fixtures.Override mechanism preserved: each binary proxy
execs the patchedsrc/vortex-*script, socweagans/composer-patchescustomisations keep working.