Skip to content

Commit 5d2268c

Browse files
authored
Add deprecated workflow (#3026)
1 parent 7fb1db8 commit 5d2268c

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: Deprecated
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
test-deprecated:
8+
name: Check for deprecated exercises
9+
runs-on: ubuntu-24.04
10+
steps:
11+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
12+
with:
13+
fetch-depth: 0
14+
- name: Test deprecated exercises using test-deprecated-exercises
15+
run: bin/test-deprecated-exercises

bin/test-deprecated-exercises

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env bash
2+
set -eo pipefail
3+
4+
# Determine the base branch of the PR
5+
BASE_BRANCH=${GITHUB_BASE_REF:-main}
6+
7+
# Fetch full history for proper diff
8+
git fetch origin "$BASE_BRANCH"
9+
10+
# Compute merge base
11+
MERGE_BASE=$(git merge-base HEAD origin/"$BASE_BRANCH")
12+
13+
# Get changed files relative to merge base
14+
changed_files=$(git diff --name-only "$MERGE_BASE" HEAD)
15+
16+
# Extract unique exercise directories
17+
changed_exercises=$(echo "$changed_files" | grep -E '^exercises/(practice|concept)/' || true)
18+
changed_exercises=$(echo "$changed_exercises" | cut -d/ -f1-3 | sort -u)
19+
20+
# Early exit if no exercise changed
21+
if [ -z "$changed_exercises" ]; then
22+
echo "No exercises changed!"
23+
exit 0
24+
fi
25+
26+
# Load deprecated exercises from config.json
27+
deprecated_exercises=$(jq -r '
28+
[
29+
(.exercises.concept[]? | select(.status=="deprecated") | "exercises/concept/" + .slug),
30+
(.exercises.practice[]? | select(.status=="deprecated") | "exercises/practice/" + .slug)
31+
] | .[]
32+
' config.json)
33+
34+
# Check for deprecated ones
35+
for ex in $changed_exercises; do
36+
if echo "$deprecated_exercises" | grep -qx "$ex"; then
37+
echo "❌ Deprecated exercise changed: $ex"
38+
exit 1
39+
fi
40+
done
41+
42+
echo "✅ No deprecated exercises changed!"

0 commit comments

Comments
 (0)