Reticulum-Go/scripts/ci/bootstrap.sh

46 lines
1.2 KiB
Bash
Raw Permalink Normal View History

#!/bin/sh
# Install pinned Go-based dev tools into GOBIN (default: go env GOBIN or GOPATH/bin).
set -eu
ROOT="$(CDPATH='' cd -- "$(dirname "$0")/../.." && pwd)"
cd "$ROOT"
. "$ROOT/scripts/ci/dev-tools.env"
if ! command -v go >/dev/null 2>&1; then
echo "bootstrap: install Go $CI_GO_VERSION first (mise install, or https://go.dev/dl/)" >&2
exit 1
fi
GOBIN="${GOBIN:-$(go env GOBIN)}"
if [ -z "$GOBIN" ]; then
GOBIN="$(go env GOPATH)/bin"
fi
mkdir -p "$GOBIN"
export GOBIN
export PATH="$GOBIN:$PATH"
echo "bootstrap: installing dev tools into $GOBIN"
install_tool() {
module="$1"
version="$2"
env GOFLAGS= GOSUMDB=sum.golang.org GOPROXY=https://proxy.golang.org,direct \
go install "${module}@${version}"
}
install_tool "github.com/go-task/task/v3/cmd/task" "$CI_TASK_VERSION"
install_tool "github.com/mgechev/revive" "$CI_REVIVE_VERSION"
install_tool "honnef.co/go/tools/cmd/staticcheck" "$CI_STATICCHECK_VERSION"
echo ""
echo "bootstrap: Go tools installed. Ensure GOBIN is on PATH:"
echo " export PATH=\"$GOBIN:\$PATH\""
echo ""
echo "bootstrap: optional system packages (distro package manager):"
echo " shellcheck, yamllint"
echo ""
echo "bootstrap: next steps:"
echo " task doctor"
echo " task hooks:install"