mirror of
https://github.com/kubevela/kubevela.git
synced 2026-04-22 02:26:56 +00:00
74 lines
2.4 KiB
Bash
Executable File
74 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Wrapper script to run golangci-lint and ignore typecheck errors
|
|
# This script filters out false positive typecheck errors from golangci-lint v1.60.1
|
|
|
|
set -euo pipefail
|
|
|
|
# Create temporary files for output
|
|
tmpfile=$(mktemp)
|
|
filtered=$(mktemp)
|
|
|
|
# Ensure cleanup on exit
|
|
cleanup() {
|
|
rm -f "$tmpfile" "$filtered"
|
|
}
|
|
trap cleanup EXIT INT TERM
|
|
|
|
if ${GOLANGCILINT:-golangci-lint} run --config .golangci.yml --fix --verbose --exclude-dirs 'scaffold' > "$tmpfile" 2>&1; then
|
|
exit_code=0
|
|
else
|
|
exit_code=$?
|
|
fi
|
|
|
|
# Keep the original verbose output (level= lines)
|
|
grep -E "^level=|^[[:space:]]*$" "$tmpfile" > "$filtered" || true
|
|
|
|
# Check for non-typecheck errors and add them to output
|
|
if grep -E "\.go:[0-9]+:[0-9]+:.*\(" "$tmpfile" 2>/dev/null | grep -v "(typecheck)" > /dev/null; then
|
|
{
|
|
echo ""
|
|
echo "Linting errors found:"
|
|
grep -E "\.go:[0-9]+:[0-9]+:.*\(" "$tmpfile" | grep -v "(typecheck)" || true
|
|
} >> "$filtered"
|
|
fi
|
|
|
|
cat "$filtered"
|
|
if [[ $exit_code -eq 0 ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
# Count non-typecheck errors in .go files
|
|
non_typecheck_errors=$(grep -E "\.go:[0-9]+:[0-9]+:.*\(" "$tmpfile" 2>/dev/null | grep -v "(typecheck)" | grep -c . || echo "0")
|
|
|
|
# Ensure the count is a valid number (remove spaces and newlines)
|
|
non_typecheck_errors=$(echo "$non_typecheck_errors" | tr -d '[:space:]')
|
|
|
|
# Check if golangci-lint itself had a critical failure (not a linting error)
|
|
# This catches cases like config errors, missing files, etc.
|
|
if [[ $exit_code -ne 0 ]] && [[ $non_typecheck_errors -eq 0 ]]; then
|
|
# Check if there are only typecheck errors
|
|
total_errors=$(grep -E "\.go:[0-9]+:[0-9]+:.*\(" "$tmpfile" 2>/dev/null | grep -c . || echo "0")
|
|
typecheck_errors=$(grep -E "\.go:[0-9]+:[0-9]+:.*\(typecheck\)" "$tmpfile" 2>/dev/null | grep -c . || echo "0")
|
|
|
|
# Clean up the counts
|
|
total_errors=$(echo "$total_errors" | tr -d '[:space:]')
|
|
typecheck_errors=$(echo "$typecheck_errors" | tr -d '[:space:]')
|
|
|
|
if [[ $total_errors -eq $typecheck_errors ]]; then
|
|
# Only typecheck errors, ignore them
|
|
exit 0
|
|
else
|
|
# There was a critical failure, show the full output and exit with error
|
|
echo ""
|
|
echo "Critical golangci-lint failure detected:"
|
|
cat "$tmpfile"
|
|
exit "$exit_code"
|
|
fi
|
|
fi
|
|
|
|
if [[ $non_typecheck_errors -gt 0 ]]; then
|
|
exit "$exit_code"
|
|
else
|
|
# Only typecheck errors, ignore them
|
|
exit 0
|
|
fi |