Skip to content

Commit 214d71e

Browse files
committed
Dynamically load deprecated files from config.json using jq
1 parent 2d63504 commit 214d71e

File tree

2 files changed

+12
-17
lines changed

2 files changed

+12
-17
lines changed

.github/workflows/check-deprecated-exercises.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,7 @@ jobs:
1111
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
1212
with:
1313
fetch-depth: 0
14+
- name: Install jq
15+
run: sudo apt-get update && sudo apt-get install -y jq
1416
- name: Test deprecated exercises using test-deprecated-exercises
1517
run: bin/test-deprecated-exercises

bin/test-deprecated-exercises

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,33 +17,26 @@ changed_files=$(git diff --name-only "$MERGE_BASE" HEAD)
1717
changed_exercises=$(echo "$changed_files" | grep -E '^exercises/(practice|concept)/' || true)
1818
changed_exercises=$(echo "$changed_exercises" | cut -d/ -f1-3 | sort -u)
1919

20-
echo "$changed_exercises"
21-
20+
# Early exit if no exercise changed
2221
if [ -z "$changed_exercises" ]; then
2322
echo "No exercises changed!"
2423
exit 0
2524
fi
2625

27-
# Deprecated practice exercises
28-
deprecated_exercises=(
29-
"exercises/practice/accumulate"
30-
"exercises/practice/beer-song"
31-
"exercises/practice/binary"
32-
"exercises/practice/diffie-hellman"
33-
"exercises/practice/hexadecimal"
34-
"exercises/practice/minesweeper"
35-
"exercises/practice/octal"
36-
"exercises/practice/strain"
37-
"exercises/practice/trinary"
38-
"exercises/concept/play-your-cards"
39-
)
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)
4033

4134
# Check for deprecated ones
4235
for ex in $changed_exercises; do
43-
if printf '%s\n' "${deprecated_exercises[@]}" | grep -qx "$ex"; then
36+
if echo "$deprecated_exercises" | grep -qx "$ex"; then
4437
echo "❌ Deprecated exercise changed: $ex"
4538
exit 1
4639
fi
4740
done
4841

49-
echo "✅ No deprecated exercises changed!"
42+
echo "✅ No deprecated exercises changed!"

0 commit comments

Comments
 (0)