docs: add /release command docs + visual-reference to guide index
- CLAUDE.md: document /release slash command with examples - guide/README.md: add visual-reference.md to contents table - scripts/compile-questions.sh: quiz compilation utility Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
59ba1ae174
commit
23e0ac476d
3 changed files with 72 additions and 0 deletions
68
scripts/compile-questions.sh
Executable file
68
scripts/compile-questions.sh
Executable file
|
|
@ -0,0 +1,68 @@
|
|||
#!/bin/bash
|
||||
# compile-questions.sh — Compile quiz YAML files into landing questions.json
|
||||
# Usage: ./scripts/compile-questions.sh
|
||||
#
|
||||
# Reads all quiz/questions/*.yaml, merges into a single JSON with categories + questions.
|
||||
# Output: $LANDING_DIR/questions.json
|
||||
set -euo pipefail
|
||||
|
||||
GUIDE_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
LANDING_DIR="/Users/florianbruniaux/Sites/perso/claude-code-ultimate-guide-landing"
|
||||
YAML_DIR="$GUIDE_DIR/quiz/questions"
|
||||
NODE_PATH="$GUIDE_DIR/quiz/node_modules"
|
||||
OUTPUT="$LANDING_DIR/questions.json"
|
||||
|
||||
if [ ! -d "$YAML_DIR" ]; then
|
||||
echo "ERROR: Quiz directory not found: $YAML_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$NODE_PATH/yaml" ]; then
|
||||
echo "ERROR: yaml module not found in $NODE_PATH" >&2
|
||||
echo "Run: cd quiz && npm install yaml" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
NODE_PATH="$NODE_PATH" node -e "
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const YAML = require('yaml');
|
||||
|
||||
const yamlDir = process.argv[1];
|
||||
const files = fs.readdirSync(yamlDir)
|
||||
.filter(f => f.endsWith('.yaml'))
|
||||
.sort();
|
||||
|
||||
const categories = [];
|
||||
const questions = [];
|
||||
|
||||
for (const file of files) {
|
||||
const content = fs.readFileSync(path.join(yamlDir, file), 'utf8');
|
||||
const data = YAML.parse(content);
|
||||
|
||||
if (!data.category || !data.category_id || !data.questions) {
|
||||
console.error('Invalid YAML structure in ' + file);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
categories.push({ id: data.category_id, name: data.category });
|
||||
|
||||
for (const q of data.questions) {
|
||||
questions.push({
|
||||
id: q.id,
|
||||
difficulty: q.difficulty,
|
||||
profiles: q.profiles,
|
||||
category_id: data.category_id,
|
||||
question: q.question,
|
||||
options: q.options,
|
||||
correct: q.correct,
|
||||
explanation: q.explanation,
|
||||
doc_reference: q.doc_reference
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const output = JSON.stringify({ categories, questions }, null, 2);
|
||||
fs.writeFileSync(process.argv[2], output + '\n');
|
||||
console.log(questions.length + ' questions compiled (' + files.length + ' categories)');
|
||||
" "$YAML_DIR" "$OUTPUT"
|
||||
Loading…
Add table
Add a link
Reference in a new issue