69 lines
2.4 KiB
Bash
Executable File
69 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# パイプの途中でエラーが発生した場合も終了ステータスに反映させる
|
|
set -o pipefail
|
|
|
|
# スクリプトの場所 (scripts/) からプロジェクトルート (notebook/) を動的に取得
|
|
BASE_DIR=$(cd "$(dirname "$0")/.." && pwd)
|
|
REFACTOR_DIR="$BASE_DIR/refactoring"
|
|
SKILL_FILE="$BASE_DIR/.gemini/skills/strudel_refactor.md"
|
|
GEMINI_REF="$BASE_DIR/.gemini/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 "$REFACTOR_DIR"
|
|
|
|
# ファイルが見つからない場合にワイルドカードをそのまま展開しない設定
|
|
shopt -s nullglob
|
|
|
|
# 引数がある場合はそれを使用し、ない場合は strudel/ フォルダの全mdファイルを対象にする
|
|
if [ $# -gt 0 ]; then
|
|
files=("$@")
|
|
else
|
|
files=("$BASE_DIR/strudel"/*.md)
|
|
fi
|
|
|
|
echo "Strudel Code Analysis & Refactoring Skill started..."
|
|
|
|
for file in "${files[@]}"; do
|
|
# 除外設定
|
|
[ -f "$file" ] || continue
|
|
|
|
filename=$(basename "$file")
|
|
# 特定のファイルやディレクトリを除外
|
|
[[ "$filename" =~ ^(Strudel Making Sound|Strudel Study)\.md$ ]] && continue
|
|
[[ "$file" =~ /($REFACTOR_DIR|explained|script)/ ]] && continue
|
|
|
|
echo "Processing $filename..."
|
|
|
|
# 知識ベースとスキルファイルを組み合わせて実行
|
|
tmp_file="$REFACTOR_DIR/tmp_$filename"
|
|
|
|
( [ -f "$GEMINI_REF" ] && cat "$GEMINI_REF"; \
|
|
[ -f "$STRUDEL_REF" ] && cat "$STRUDEL_REF"; \
|
|
echo ""; cat "$SKILL_FILE"; \
|
|
echo ""; cat "$file" ) | gemini > "$tmp_file"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
# 最初の数行から FILENAME: タグを検索(より柔軟な抽出)
|
|
suggested_name=$(grep -m 1 "^FILENAME:" "$tmp_file" | sed 's/^FILENAME: *//g' | tr -d '\r')
|
|
|
|
if [ -n "$suggested_name" ]; then
|
|
# FILENAME行を除去して保存 (最初の1行目にあると仮定しつつ、sedで安全に削除)
|
|
sed '/^FILENAME:/d' "$tmp_file" > "$REFACTOR_DIR/$suggested_name"
|
|
rm "$tmp_file"
|
|
echo "Successfully refactored and renamed to: $suggested_name"
|
|
else
|
|
mv "$tmp_file" "$REFACTOR_DIR/$filename"
|
|
echo "Successfully refactored: $filename (Rename tag not found)"
|
|
fi
|
|
else
|
|
rm -f "$tmp_file"
|
|
echo "Error processing $filename"
|
|
fi
|
|
done |