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 " | \
18+ grep -E ' ^exercises/(practice|concept)/' | \
19+ cut -d/ -f1-3 | sort -u)
20+
21+ echo " $changed_exercises "
22+
23+ if [ -z " $changed_exercises " ]; then
24+ echo " No exercises changed!"
25+ exit 0
26+ fi
27+
28+ # Deprecated practice exercises
29+ deprecated_exercises=(
30+ " exercises/practice/accumulate"
31+ " exercises/practice/beer-song"
32+ " exercises/practice/binary"
33+ " exercises/practice/diffie-hellman"
34+ " exercises/practice/hexadecimal"
35+ " exercises/practice/minesweeper"
36+ " exercises/practice/octal"
37+ " exercises/practice/strain"
38+ " exercises/practice/trinary"
39+ " exercises/concept/play-your-cards"
40+ )
41+
42+ # Check for deprecated ones
43+ for ex in $changed_exercises ; do
44+ if printf ' %s\n' " ${deprecated_exercises[@]} " | grep -qx " $ex " ; then
45+ echo " ❌ Deprecated exercise changed: $ex "
46+ exit 1
47+ fi
48+ done
49+
50+ echo " ✅ No deprecated exercises changed!"
0 commit comments