Re-vendor the canonical files from sneak/prompts at dd4027b (closes #13)
check / check (push) Successful in 2m2s
check / check (push) Successful in 2m2s
`.dockerignore`, `.gitignore`, `.golangci.yml` and the workflow are their copies at that commit. This repo's own entries are kept after the canonical content: the anchored `/attrsum` binary, the Go entries in `.gitignore`, and tabs for `*.go` in the new `.editorconfig`. `REPO_POLICIES.md` is new. The workflow keeps `fetch-depth: 0`, which the policies require of a repo that stamps a tag-derived version. The lint phase moves to golangci-lint v2.14.0. `script/bootstrap` installs goimports with `go install` at its pinned commit unless the installed binary already has the pinned version, read with `go version -m`. It and `script/fmt` put Go's bin directory on `PATH` first, since the CI runner's `PATH` lacks it. Model: opus-5-5
This commit was merged in pull request #21.
This commit is contained in:
+34
-6
@@ -4,14 +4,16 @@
|
||||
# installed tools are skipped. Base tooling comes from nix, apt, brew,
|
||||
# or apk (detected in that order); assumes nothing is present.
|
||||
# goimports is installed via `go install` at a pinned commit (never
|
||||
# "latest"). The linter is not installed: it runs only as the lint phase
|
||||
# of the Dockerfile.
|
||||
# "latest"), unless the installed one already has the pinned version.
|
||||
# The linter is not installed: it runs only as the lint phase of the
|
||||
# Dockerfile.
|
||||
set -eu
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
|
||||
|
||||
# Pinned versions, 2026-10-05
|
||||
# goimports v0.42.0
|
||||
# GOIMPORTS_REF is the commit tagged GOIMPORTS_VERSION.
|
||||
GOIMPORTS_VERSION="v0.42.0"
|
||||
GOIMPORTS_REF="golang.org/x/tools/cmd/goimports@009367f5c17a8d4c45a961a3a509277190a9a6f0"
|
||||
|
||||
PKGMGR=""
|
||||
@@ -61,6 +63,30 @@ missing() {
|
||||
! command -v "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Print the version the goimports on PATH was built from, or nothing.
|
||||
# goimports has no version flag; `go version -m` reads the binary's
|
||||
# build info, whose "mod" line names the module and its version.
|
||||
goimports_version() {
|
||||
if missing goimports; then return 0; fi
|
||||
go version -m "$(command -v goimports)" 2>/dev/null |
|
||||
awk '$1 == "mod" { print $3 }'
|
||||
}
|
||||
|
||||
ensure_goimports() {
|
||||
if [ "$(goimports_version)" = "$GOIMPORTS_VERSION" ]; then
|
||||
echo "goimports $GOIMPORTS_VERSION already installed"
|
||||
return 0
|
||||
fi
|
||||
go install "$GOIMPORTS_REF"
|
||||
hash -r
|
||||
if [ "$(goimports_version)" != "$GOIMPORTS_VERSION" ]; then
|
||||
echo "bootstrap: goimports on PATH is not $GOIMPORTS_VERSION:" \
|
||||
"$(command -v goimports)" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "goimports $GOIMPORTS_VERSION installed"
|
||||
}
|
||||
|
||||
main() {
|
||||
cd "$ROOT"
|
||||
|
||||
@@ -68,9 +94,11 @@ main() {
|
||||
if missing make; then pkg_install gnumake make make make; fi
|
||||
if missing go; then pkg_install go golang go go; fi
|
||||
|
||||
# Format tool, pinned via go install (installs into
|
||||
# "$(go env GOPATH)/bin"; ensure that is on your PATH).
|
||||
if missing goimports; then go install "$GOIMPORTS_REF"; fi
|
||||
# go install writes to Go's bin directory, which need not be on PATH.
|
||||
gobin="$(go env GOBIN)"
|
||||
[ -n "$gobin" ] || gobin="$(go env GOPATH)/bin"
|
||||
PATH="$gobin:$PATH"
|
||||
ensure_goimports
|
||||
|
||||
go mod download
|
||||
|
||||
|
||||
Reference in New Issue
Block a user