File tree Expand file tree Collapse file tree 2 files changed +57
-0
lines changed Expand file tree Collapse file tree 2 files changed +57
-0
lines changed Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff line change 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!"
You can’t perform that action at this time.
0 commit comments