feat(build): summer plugin:update

- module installs move to the newest compatible registry release with
  one go get; submodules fetch tags, check out the release tag and
  require it in go.mod; go.work overrides and version pins are refreshed
- unlisted submodules (git URL installs) update from their own tags and
  plugin.yaml; --offline restricts to that
- without an ID every plugin that resolves is updated; in-app, unlisted
  and incompatible ones are reported; failure only when a resolved
  update cannot be carried out
- same prompt rule as plugin:install
This commit is contained in:
Jakub Zych
2026-10-29 18:46:14 +01:00
parent 8093587696
commit d024ab4bb8
8 changed files with 838 additions and 55 deletions

View File

@@ -109,7 +109,8 @@ summer plugin:add plugins/acme/blog
|---------|---------|
| `summer plugin:add` | Registers a local plugin directory: `summer.yaml`, a `require` and a local `replace` in `go.mod`, and `go.work`. |
| `summer plugin:manifest` | Writes the plugin's `plugin.yaml` from its sources (`plugin.go`, `go.mod`, the README). `--pretend` prints it, `--check` exits 1 when the committed file is missing or stale, `--name` and `--description` override the README text. See [Publishing plugins](../plugins/marketplace.md). |
| `summer plugin:install` | Installs a plugin by ID (`acme.blog`, or pinned `acme.blog@v0.3.0`) from the registry as a Go module: the newest release the application's framework version meets, after printing it and asking (`--yes` skips the question). See [Installing plugins](../plugins/marketplace.md#installing-plugins). |
| `summer plugin:install` | Installs a plugin by ID (`acme.blog`, or pinned `acme.blog@v0.3.0`) from the registry as a Go module, the newest release the application's framework version meets, with the plugins it requires. `--source` installs them as git submodules, and a git URL installs a plugin from its repository as a submodule. It prints the additions and asks (`--yes` skips the question). See [Installing plugins](../plugins/marketplace.md#installing-plugins). |
| `summer plugin:update` | Moves one plugin, or every plugin, to its newest compatible release: `go get` for module installs, the release tag for submodules. Prints the updates and asks like `plugin:install`; `--offline` updates submodules from their own tags. See [Updating plugins](../plugins/marketplace.md#updating-plugins). |
## Generating plugin parts