- tools.json now has both "version" (tag) and "hash" (commit) fields - Output format: toolname@version [hash] (in duration) - Update tool fetches and stores both version and hash - Fix .gitignore to not exclude cmd/update directory |
||
|---|---|---|
| cmd/update | ||
| .gitignore | ||
| go.mod | ||
| main.go | ||
| README.md | ||
| tools.json | ||
gosetup
Installs common Go development tools at pinned versions.
Install
# current as of 2025-12-18
go install sneak.berlin/go/gosetup@a414a82306fe2095119eeeb3051bb3f23a803e1e ; hash -r ; gosetup
Usage
# Install all tools at pinned versions
gosetup
# List tools and versions without installing
gosetup -l
# Dry run (show commands without executing)
gosetup -n
# Verbose output
gosetup -v
# Control parallelism (default: 4)
gosetup -j 8
Updating Pinned Versions
To update tools.json with the latest versions:
go run ./cmd/update -o tools.json
Included Tools
- Language Server: gopls
- Formatters: gofumpt, goimports, golines
- Linters: golangci-lint, staticcheck, errcheck, revive
- vim-go tools: godef, gotests, gomodifytags, impl, fillstruct, fillswitch, motion, iferr, asmfmt, gotags
- Debugger: dlv (delve)
- Documentation: godoc
- And more: gocyclo, ineffassign, misspell, unconvert, gopkgs, go-outline, go-symbols