SHA256
51 lines
2.2 KiB
Bash
51 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
# Каталог проекта (по умолчанию текущая директория)
|
|
PROJECT_DIR="${1:-.}"
|
|
OUTPUT_FILE="llm_code_dump.md"
|
|
|
|
echo "Сбор кодовой базы для LLM ревью из: $PROJECT_DIR"
|
|
echo "Создание файла: $OUTPUT_FILE"
|
|
|
|
# Инициализируем файл
|
|
echo "# Codebase Dump" > "$OUTPUT_FILE"
|
|
echo "Дата создания: $(date +"\%Y-\%m-\%d \%H:\%M:\%S")" >> "$OUTPUT_FILE"
|
|
echo "" >> "$OUTPUT_FILE"
|
|
|
|
echo "## Структура проекта" >> "$OUTPUT_FILE"
|
|
# Выводим структуру одной строкой для надежности
|
|
find "$PROJECT_DIR" -type d \( -name "target" -o -name "__pycache__" -o -name ".git" -o -name "venv" -o -name ".venv" -o -name "node_modules" \) -prune -o -print >> "$OUTPUT_FILE"
|
|
echo "" >> "$OUTPUT_FILE"
|
|
|
|
echo "## Исходный код" >> "$OUTPUT_FILE"
|
|
|
|
# Ищем нужные файлы без переносов строк (\), чтобы избежать ошибки с пробелами
|
|
find "$PROJECT_DIR" -type d \( -name "target" -o -name "__pycache__" -o -name ".git" -o -name "venv" -o -name ".venv" -o -name "node_modules" \) -prune -o -type f \( -name "*.rs" -o -name "Cargo.toml" -o -name "Cargo.lock" -o -name "*.py" -o -name "requirements.txt" -o -name "*.html" -o -name "*.css" -o -name "*.js" \) -print0 | while IFS= read -r -d '' file; do
|
|
|
|
echo "Обработка: $file"
|
|
|
|
echo "### Файл: \`$file\`" >> "$OUTPUT_FILE"
|
|
|
|
# Определяем расширение для подсветки синтаксиса в Markdown
|
|
ext="${file##*.}"
|
|
case "$ext" in
|
|
rs) lang="rust" ;;
|
|
py) lang="python" ;;
|
|
html) lang="html" ;;
|
|
css) lang="css" ;;
|
|
js) lang="javascript" ;;
|
|
toml|lock) lang="toml" ;;
|
|
txt) lang="text" ;;
|
|
*) lang="" ;;
|
|
esac
|
|
|
|
# Записываем содержимое файла
|
|
echo '```'"$lang" >> "$OUTPUT_FILE"
|
|
cat "$file" >> "$OUTPUT_FILE"
|
|
echo '```' >> "$OUTPUT_FILE"
|
|
echo "" >> "$OUTPUT_FILE"
|
|
echo "---" >> "$OUTPUT_FILE"
|
|
echo "" >> "$OUTPUT_FILE"
|
|
done
|
|
|
|
echo "✅ Готово! Весь код собран в файл $OUTPUT_FILE" |