File size: 3,000 Bytes
6a7089a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | #!/bin/bash
set -e
# check.sh β Local pre-push checks matching GitHub Actions CI
# Runs: format β vet β build β lint
cd "$(dirname "$0")/.."
BOLD=$'\033[1m'
ACCENT=$'\033[38;2;251;191;36m'
INFO=$'\033[38;2;136;146;176m'
SUCCESS=$'\033[38;2;0;229;204m'
ERROR=$'\033[38;2;230;57;70m'
MUTED=$'\033[38;2;90;100;128m'
NC=$'\033[0m'
ok() { echo -e " ${SUCCESS}β${NC} $1"; }
fail() { echo -e " ${ERROR}β${NC} $1"; [ -n "${2:-}" ] && echo -e " ${MUTED}$2${NC}"; }
hint() { echo -e " ${MUTED}$1${NC}"; }
section() {
echo ""
echo -e " ${ACCENT}${BOLD}$1${NC}"
}
trap 'rm -f pinchtab coverage.out 2>/dev/null' EXIT
echo ""
echo -e " ${ACCENT}${BOLD}π¦ Pinchtab Check${NC}"
echo -e " ${INFO}Running pre-push checks (matches GitHub Actions CI)...${NC}"
# ββ Format βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
section "Format"
unformatted=$(gofmt -l .)
if [ -n "$unformatted" ]; then
fail "gofmt" "Files not formatted:"
echo "$unformatted" | while read f; do hint " $f"; done
echo ""
printf " Fix formatting now? (Y/n) "
read -r answer
if [ "$answer" != "n" ] && [ "$answer" != "N" ]; then
gofmt -w .
ok "gofmt (fixed)"
else
hint "Run: gofmt -w ."
exit 1
fi
else
ok "gofmt"
fi
# ββ Vet ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
section "Vet"
if ! go vet ./... 2>&1; then
fail "go vet"
exit 1
fi
ok "go vet"
# ββ Build ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
section "Build"
if ! go build -o pinchtab ./cmd/pinchtab 2>&1; then
fail "go build"
exit 1
fi
ok "go build"
# ββ Lint βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
section "Lint"
LINT_CMD=""
if command -v golangci-lint >/dev/null 2>&1; then
LINT_CMD="golangci-lint"
elif [ -x "$HOME/bin/golangci-lint" ]; then
LINT_CMD="$HOME/bin/golangci-lint"
elif [ -x "/usr/local/bin/golangci-lint" ]; then
LINT_CMD="/usr/local/bin/golangci-lint"
fi
if [ -n "$LINT_CMD" ]; then
if ! $LINT_CMD run ./...; then
fail "golangci-lint"
exit 1
fi
ok "golangci-lint"
else
echo -e " ${ACCENT}Β·${NC} golangci-lint not installed β skipping"
hint "Install: brew install golangci-lint"
fi
# ββ Summary ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
section "Summary"
echo ""
echo -e " ${SUCCESS}${BOLD}All checks passed!${NC} Ready to push."
echo ""
|