Skip to content

Commit a578ae9

Browse files
committed
Add workflow for deprecated exercises
1 parent 7fb1db8 commit a578ae9

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-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: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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

Comments
 (0)