id = "gup"
name = "gup"
homepage = "https://github.com/nao1215/gup"
description = "Fast manager for Go-installed binaries in $GOBIN: update, export/import, and migrate toolsets across machines."
executables = ["gup"]
[dotfiles]
paths = ["[configHome]/gup/gup.json"]
secret = []
side_effect = false
[commands]
format = 1
label = "Update Go tools"
description = "Update the Go binaries in GOBIN with `gup update`, optionally only named tools or excluding some. Pin, import/export and other subcommands are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.source]]
id = "readme"
kind = "manual"
url = "https://github.com/nao1215/gup/blob/main/README.md"
revision = "main 2026-10"
evidence = """
`gup update` updates every binary under `$GOBIN`, in parallel.
$ gup update subaru gup ubume
$ gup update --exclude=gopls,golangci-lint //--exclude or -e, this example will exclude 'gopls' and 'golangci-lint'
Also works in combination with --dry-run.
- `--main` (`-m`): update by `@main`
- `--master`: update by `@master`
- `--latest`: update by `@latest`
$ gup update --main=gup,lazygit --master=sqly --latest=air
"""
[[commands.field]]
id = "subcommand"
label = "Subcommand"
fixed = ["update"]
sources = ["readme"]
[[commands.field]]
id = "binaries"
label = "Binaries"
description = "Leave empty to update everything."
type = "string"
position = 0
multiple = true
sources = ["readme"]
[[commands.field]]
id = "exclude"
label = "Exclude"
description = "Comma-separated names, no spaces."
type = "string"
option = ["--exclude", "-e"]
sources = ["readme"]
[[commands.field]]
id = "dry_run"
label = "Dry run"
type = "boolean"
option = ["--dry-run"]
sources = ["readme"]
[[commands.field]]
id = "main"
label = "Update from @main"
description = "Comma-separated tool names."
type = "string"
option = ["--main", "-m"]
sources = ["readme"]
[[commands.field]]
id = "master"
label = "Update from @master"
description = "Comma-separated tool names."
type = "string"
option = ["--master"]
sources = ["readme"]
[[commands.field]]
id = "latest"
label = "Update from @latest"
description = "Comma-separated tool names."
type = "string"
option = ["--latest"]
sources = ["readme"]
[[commands.task]]
id = "update_all"
label = "Update all tools"
fields = ["subcommand"]
required = ["subcommand"]
[[commands.task]]
id = "preview"
label = "Preview update"
fields = ["subcommand", "dry_run", "exclude"]
required = ["subcommand"]
set = { dry_run = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["subcommand", "binaries", "exclude", "dry_run"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["main", "master", "latest"]