Warning
This project is (almost) entirely vibe coded. It is shared in the hope that it is useful, but comes with absolutely no warranty whatsoever. Use at your own risk.
A tool for interactively updating version constraints in composer.json files in a drupal context. It queries drupal.org for Drupal module releases and Packagist for all other packages, letting you pick new versions without invoking Composer itself.
- Go library (
drupalupdatepackage) — core logic for parsingcomposer.json, fetching releases from drupal.org and Packagist, and rewriting version constraints. - CLI tool (
cmd/composer-drupal-update) — interactive terminal tool that walks you through each package and lets you select a version. - Web server (
cmd/composer-drupal-server) — HTTP server that exposes a JSON API, an embedded frontend, and Swagger UI documentation. - Frontend (
frontend/) — plain JavaScript single-page app with drag-and-dropcomposer.jsonloading, a version-selection table, and copyable Composer commands.
go run ./cmd/composer-drupal-server -addr :8080
Then open http://localhost:8080 in your browser.
go run ./cmd/composer-drupal-update path/to/composer.json
Then open:
| URL | Description |
|---|---|
http://localhost:8080/ |
Frontend app |
http://localhost:8080/api/ |
API |
http://localhost:8080/doc/ |
Swagger UI |
http://localhost:8080/openapi.yaml |
OpenAPI spec |
go test ./...
cd frontend && yarn test
cd frontend && yarn typecheck
The project uses golangci-lint with a strict configuration (see .golangci.yml). Run the linter locally:
go tool golangci-lint run ./...
The config enables the default “standard” linter set plus many extra linters (e.g. errcheck, govet, staticcheck, gosec, wrapcheck, paralleltest, usestdlibvars). All issues must be fixed (no per-linter caps). nolint comments require an explanation and must target a specific linter; paralleltest and tparallel may be exempt from explanation where needed.
WTFPL — Do What The Fuck You Want To Public License. See LICENSE.