{
  "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
    },
    "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.\n$ gup update subaru gup ubume\n$ gup update --exclude=gopls,golangci-lint    //--exclude or -e, this example will exclude 'gopls' and 'golangci-lint'\nAlso works in combination with --dry-run.\n- `--main` (`-m`): update by `@main`\n- `--master`: update by `@master`\n- `--latest`: update by `@latest`\n$ gup update --main=gup,lazygit --master=sqly --latest=air\n"
      }
    ],
    "field": [
      {
        "id": "subcommand",
        "label": "Subcommand",
        "fixed": [
          "update"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "binaries",
        "label": "Binaries",
        "description": "Leave empty to update everything.",
        "type": "string",
        "position": 0,
        "multiple": true,
        "sources": [
          "readme"
        ]
      },
      {
        "id": "exclude",
        "label": "Exclude",
        "description": "Comma-separated names, no spaces.",
        "type": "string",
        "option": [
          "--exclude",
          "-e"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "dry_run",
        "label": "Dry run",
        "type": "boolean",
        "option": [
          "--dry-run"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "main",
        "label": "Update from @main",
        "description": "Comma-separated tool names.",
        "type": "string",
        "option": [
          "--main",
          "-m"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "master",
        "label": "Update from @master",
        "description": "Comma-separated tool names.",
        "type": "string",
        "option": [
          "--master"
        ],
        "sources": [
          "readme"
        ]
      },
      {
        "id": "latest",
        "label": "Update from @latest",
        "description": "Comma-separated tool names.",
        "type": "string",
        "option": [
          "--latest"
        ],
        "sources": [
          "readme"
        ]
      }
    ],
    "task": [
      {
        "id": "update_all",
        "label": "Update all tools",
        "fields": [
          "subcommand"
        ],
        "required": [
          "subcommand"
        ]
      },
      {
        "id": "preview",
        "label": "Preview update",
        "fields": [
          "subcommand",
          "dry_run",
          "exclude"
        ],
        "required": [
          "subcommand"
        ],
        "set": {
          "dry_run": [
            true
          ]
        }
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "subcommand",
          "binaries",
          "exclude",
          "dry_run"
        ]
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "fields": [
          "main",
          "master",
          "latest"
        ]
      }
    ]
  }
}
