-
Notifications
You must be signed in to change notification settings - Fork 429
Expand file tree
/
Copy pathformat.sh
More file actions
executable file
·85 lines (72 loc) · 2.66 KB
/
format.sh
File metadata and controls
executable file
·85 lines (72 loc) · 2.66 KB
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
#!/bin/bash
set -e
set -o pipefail
# --- Argument Parsing ---
# Initialize flags
FORMAT_ALL=false
RUFF_UNSAFE_FIXES_FLAG=""
# Process command-line arguments
# We use a while loop with shift to process each argument
while [[ "$#" -gt 0 ]]; do
case "$1" in
--all)
FORMAT_ALL=true
echo "Detected --all flag: Formatting all Python files."
shift # Consume the argument
;;
--unsafe-fixes)
RUFF_UNSAFE_FIXES_FLAG="--unsafe-fixes"
echo "Detected --unsafe-fixes flag: Ruff will run with unsafe fixes."
shift # Consume the argument
;;
*)
# Handle unknown arguments or just ignore them if we only care about specific ones
echo "Warning: Unknown argument '$1'. Ignoring."
shift # Consume the argument
;;
esac
done
# Sort Spelling Allowlist
SPELLING_ALLOW_FILE=".github/actions/spelling/allow.txt"
if [ -f "$SPELLING_ALLOW_FILE" ]; then
echo "Sorting and de-duplicating $SPELLING_ALLOW_FILE"
sort -u "$SPELLING_ALLOW_FILE" -o "$SPELLING_ALLOW_FILE"
fi
CHANGED_FILES=""
if $FORMAT_ALL; then
echo "Formatting all Python files in the repository."
# Find all Python files, excluding grpc generated files as per original logic.
# `sort -u` ensures unique files and consistent ordering for display/xargs.
CHANGED_FILES=$(find . -name '*.py' -not -path './src/a2a/grpc/*' | sort -u)
if [ -z "$CHANGED_FILES" ]; then
echo "No Python files found to format."
exit 0
fi
else
echo "No '--all' flag found. Formatting changed Python files based on git diff."
TARGET_BRANCH="origin/${GITHUB_BASE_REF:-main}"
git fetch origin "${GITHUB_BASE_REF:-main}" --depth=1
MERGE_BASE=$(git merge-base HEAD "$TARGET_BRANCH")
# Get python files changed in this PR, excluding grpc generated files
CHANGED_FILES=$(git diff --name-only --diff-filter=ACMRTUXB "$MERGE_BASE" HEAD -- '*.py' ':!src/a2a/grpc/*')
if [ -z "$CHANGED_FILES" ]; then
echo "No changed Python files to format."
exit 0
fi
fi
echo "Files to be formatted:"
echo "$CHANGED_FILES"
# Helper function to run formatters with the list of files.
# The list of files is passed to xargs via stdin.
run_formatter() {
echo "$CHANGED_FILES" | xargs -r "$@"
}
echo "Running pyupgrade..."
run_formatter pyupgrade --exit-zero-even-if-changed --py310-plus
echo "Running autoflake..."
run_formatter autoflake -i -r --remove-all-unused-imports
echo "Running ruff check (fix-only)..."
run_formatter ruff check --fix $RUFF_UNSAFE_FIXES_FLAG
echo "Running ruff format..."
run_formatter ruff format
echo "Formatting complete."