WIP: feat: use compose-go #816

Draft
decentral1se wants to merge 1 commits from fix/492 into main
Owner

An absolutely diabolical rabbit hole that I wouldn't wish on my worst enemy.

Docker never implemented it and so we were stuck using their custom solution for loading compose config files. This led to #492. compose-go has a better API which supports our various use-cases (loading the compose files via a loaded app, loaded recipe or just directly from the FS) and actually implements the compose spec, so it's a big win!

ToDo

  • Unfuck final TODOs
  • Fix unit tests
  • Fix integration tests
    • bail if recipe lint errors and no --chaos
    • does not crash when docker image has no tag
    • detect no volumes to remove
    • remove volumes
    • list volumes
    • remove no volumes
    • remove single volume
    • remove single volume doesn't delete similar name
    • recipe lint
    • release patch bump
    • release new recipe: development release
    • push during release fails
    • release, fail, release: works
    • upgrade patch
    • upgrade minor
    • upgrade and commit
  • WTF API surface for parsing compose configs: in app context, recipe context, no context
  • Manual testing
  • Document migration notes

Notes

  • The version: ... linting rule is going away because it's deprecated
  • We may see a regression in obscure parsing error messages due to this change
An absolutely diabolical rabbit hole that I wouldn't wish on my worst enemy. Docker [never implemented it](https://github.com/docker/cli/pull/4863) and so we were stuck using their custom solution for loading compose config files. This led to https://git.coopcloud.tech/toolshed/abra/issues/492. `compose-go` has a better API which supports our various use-cases (loading the compose files via a loaded app, loaded recipe or just directly from the FS) and actually implements the compose spec, so it's a big win! ### ToDo - [x] Unfuck final TODOs - [x] Fix unit tests - [ ] Fix integration tests - [ ] `bail if recipe lint errors and no --chaos` - [ ] `does not crash when docker image has no tag` - [ ] `detect no volumes to remove` - [ ] `remove volumes` - [ ] `list volumes` - [ ] `remove no volumes` - [ ] `remove single volume` - [ ] `remove single volume doesn't delete similar name` - [ ] `recipe lint` - [ ] `release patch bump` - [ ] `release new recipe: development release` - [ ] `push during release fails` - [ ] `release, fail, release: works` - [ ] `upgrade patch` - [ ] `upgrade minor` - [ ] `upgrade and commit` - [ ] WTF API surface for parsing compose configs: in app context, recipe context, no context - [ ] Manual testing - [ ] Document migration notes ### Notes * The `version: ...` linting rule is going away because it's deprecated * We may see a regression in obscure parsing error messages due to this change
decentral1se added 1 commit 2026-04-02 15:47:01 +00:00
WIP: feat: use compose-go for compose parsing
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
7bd9d667a0
See #492
decentral1se changed title from WIP: feat: use compose-go for compose parsing to WIP: feat: use compose-go 2026-04-04 16:51:13 +00:00
decentral1se force-pushed fix/492 from 7bd9d667a0 to f2e813e2e3 2026-04-04 16:51:16 +00:00 Compare
decentral1se force-pushed fix/492 from f2e813e2e3 to 5eea459bde 2026-04-04 17:20:03 +00:00 Compare
decentral1se force-pushed fix/492 from 5eea459bde to 5cf42a8104 2026-04-04 17:37:19 +00:00 Compare
decentral1se force-pushed fix/492 from 5cf42a8104 to 94624bb16d 2026-04-04 17:39:32 +00:00 Compare
All checks were successful
continuous-integration/drone/push Build is passing
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin fix/492:fix/492
git checkout fix/492
Sign in to join this conversation.
No description provided.