74 lines
2.4 KiB
Bash
Executable File
74 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# パイプの途中でエラーが発生した場合も終了ステータスに反映させる
|
||
set -o pipefail
|
||
|
||
# スクリプトの場所 (scripts/) からプロジェクトルート (notebook/) を動的に取得
|
||
BASE_DIR=$(cd "$(dirname "$0")/.." && pwd)
|
||
OUTPUT_DIR="$BASE_DIR/explained"
|
||
SKILL_FILE="$BASE_DIR/.gemini/skills/strudel_fix_and_explain.md"
|
||
GEMINI_REF="$BASE_DIR/gemini.md"
|
||
STRUDEL_REF="$BASE_DIR/.gemini/reference.md"
|
||
|
||
# 出力先フォルダの作成
|
||
if [ ! -f "$SKILL_FILE" ]; then
|
||
echo "Error: Skill file not found at $SKILL_FILE"
|
||
exit 1
|
||
fi
|
||
|
||
mkdir -p "$OUTPUT_DIR"
|
||
|
||
# ファイルが見つからない場合にワイルドカードをそのまま展開しない設定
|
||
shopt -s nullglob
|
||
|
||
# 引数がある場合はそれを使用し、ない場合は strudel/ フォルダの全mdファイルを対象にする
|
||
if [ $# -gt 0 ]; then
|
||
files=("$@")
|
||
else
|
||
files=("$BASE_DIR/strudel"/*.md)
|
||
fi
|
||
|
||
echo "Strudel Fix & Explain Skill started..."
|
||
|
||
for file in "${files[@]}"; do
|
||
# 除外設定
|
||
[ -f "$file" ] || continue
|
||
|
||
filename=$(basename "$file")
|
||
# 特定のファイルやディレクトリを除外
|
||
[[ "$filename" =~ ^(Strudel Making Sound|Strudel Study)\.md$ ]] && continue
|
||
|
||
# 絶対パスに変換して除外ディレクトリに含まれていないかチェック
|
||
abs_path=$(realpath "$file")
|
||
[[ "$abs_path" =~ /($OUTPUT_DIR|refactoring|script)/ ]] && continue
|
||
|
||
echo "Analyzing and fixing $filename..."
|
||
|
||
# 一時ファイルに出力
|
||
tmp_file="$OUTPUT_DIR/tmp_$filename"
|
||
|
||
# ファイルを引数として直接渡す(STRUDEL_REFも必要ならここに追加)
|
||
if ! gemini "$GEMINI_REF" "$STRUDEL_REF" "$SKILL_FILE" "$file" > "$tmp_file"; then
|
||
echo "Error: Gemini CLI failed to process $filename"
|
||
rm -f "$tmp_file"
|
||
continue
|
||
fi
|
||
|
||
# ファイルが空でないか確認
|
||
if [ -s "$tmp_file" ]; then
|
||
suggested_name=$(grep -m 1 "^FILENAME:" "$tmp_file" | sed 's/^FILENAME: *//g' | tr -d '\r' | xargs)
|
||
|
||
if [ -n "$suggested_name" ]; then
|
||
# FILENAME行を除去して保存
|
||
sed '/^FILENAME:/d' "$tmp_file" > "$OUTPUT_DIR/$suggested_name"
|
||
rm "$tmp_file"
|
||
echo "Done: $OUTPUT_DIR/$suggested_name"
|
||
else
|
||
mv "$tmp_file" "$OUTPUT_DIR/$filename"
|
||
echo "Done: $filename (No rename)"
|
||
fi
|
||
else
|
||
rm -f "$tmp_file"
|
||
echo "Error processing $filename"
|
||
fi
|
||
done |