-
Notifications
You must be signed in to change notification settings - Fork 6
130 lines (106 loc) · 3.96 KB
/
black.yaml
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: PR Validation and Auto-formatting
on:
pull_request:
jobs:
auto-format:
name: Auto-format and Push Changes
runs-on: ubuntu-latest
steps:
# Step 1: Checkout the repository
- name: Checkout Repository
uses: actions/checkout@v3
with:
ref: ${{ github.head_ref }}
# Step 2: Set up Python environment
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
# Step 3: Install tools (black and isort)
- name: Install Tools
run: |
echo "Installing tools..."
python -m pip install --upgrade pip
pip install black isort
# Step 4: Run black and isort to format the code
- name: Run Black and isort
run: |
echo "Running black..."
black --line-length=119 .
echo "Running isort..."
isort .
# Step 5: Commit and push changes if any files were modified
- name: Commit and Push Changes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "Configuring git user..."
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
echo "Checking for changes..."
git status
if [ -n "$(git status --porcelain)" ]; then
echo "Changes detected. Staging files..."
git add .
echo "Committing changes..."
git commit -m "Auto-format code with Black and isort"
echo "Pushing changes to the branch..."
git push origin ${{ github.head_ref }}
echo "Push completed successfully."
else
echo "No changes detected. Nothing to commit or push."
validate-version:
if: github.event.pull_request.base.ref == 'main' && github.event.pull_request.head.ref == 'patch'
name: Validate and Update Version
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Fetch main branch
run: git fetch origin main:main
- name: Get VERSION from patch branch
id: get_patch_version
run: |
VERSION=$(grep -m 1 -oP '^VERSION=\K.*' VERSION_FILE)
if [ -z "$VERSION" ]; then
echo "Error: VERSION not found in VERSION_FILE on patch branch." >&2
exit 1
fi
echo "patch_version=$VERSION" >> $GITHUB_ENV
- name: Get VERSION from main branch
id: get_main_version
run: |
git checkout main
VERSION=$(grep -m 1 -oP '^VERSION=\K.*' VERSION_FILE)
if [ -z "$VERSION" ]; then
echo "Error: VERSION not found in VERSION_FILE on main branch." >&2
exit 1
fi
echo "main_version=$VERSION" >> $GITHUB_ENV
- name: Validate version increment
id: validate_version
run: |
patch_version=$patch_version
main_version=$main_version
# Extract PATCH numbers
main_patch=$(echo "$main_version" | awk -F '.' '{print $3}')
patch_patch=$(echo "$patch_version" | awk -F '.' '{print $3}')
# Check if the patch version is incremented correctly
if [ "$patch_patch" -ne $((main_patch + 1)) ]; then
echo "Error: PATCH version is not incremented correctly." >&2
echo "Main version: $main_version, Patch version: $patch_version" >&2
exit 1
fi
- name: Update README.md version
run: |
sed -i "1s/v[0-9]*\.[0-9]*\.[0-9]*/v$patch_version/" README.md
- name: Commit changes
if: success()
run: |
git config user.name "github-actions"
git config user.email "[email protected]"
git add README.md
git commit -m "Update version in README.md to $patch_version"
git push origin patch