Open eshcherbakov opened 3 hours ago
#!/usr/bin/env python3
import os
from pathlib import Path
from datetime import datetime
def create_prompt_dir(prompt_dir: Path):
"""Создаёт директорию для промптов, если она не существует."""
prompt_dir.mkdir(parents=True, exist_ok=True)
print(f"Директория '{prompt_dir}' создана или уже существует.")
def update_gitignore(gitignore_path: Path, prompt_dir: Path):
"""Добавляет директорию промптов в .gitignore, если её там нет."""
prompt_entry = f"{prompt_dir}/"
if not gitignore_path.exists():
# Создаём .gitignore и добавляем директорию промптов
gitignore_path.write_text(f"{prompt_entry}\n", encoding='utf-8')
print(f"Создан .gitignore с записью '{prompt_entry}'.")
else:
# Читаем существующий .gitignore
with gitignore_path.open('r', encoding='utf-8') as f:
lines = f.read().splitlines()
if prompt_entry not in lines:
# Добавляем директорию промптов в .gitignore
with gitignore_path.open('a', encoding='utf-8') as f:
f.write(f"{prompt_entry}\n")
print(f"Добавлена запись '{prompt_entry}' в .gitignore.")
else:
print(f"Запись '{prompt_entry}' уже существует в .gitignore.")
def generate_log_filename(prompt_dir: Path) -> Path:
"""Генерирует имя выходного файла с текущей датой и временем."""
now = datetime.now()
filename = f"prompt-{now.strftime('%Y%m%d')}-{now.strftime('%H%M%S')}.log"
return prompt_dir / filename
def should_exclude(file_path: Path, prompt_dir: Path, output_file: Path) -> bool:
"""Проверяет, следует ли исключить файл из обработки."""
excluded_files = {"setup.py", ".gitignore"}
if file_path.name in excluded_files:
return True
if prompt_dir in file_path.parents:
return True
if file_path.resolve() == output_file.resolve():
return True
return False
def concatenate_files(output_file: Path, current_dir: Path, prompt_dir: Path):
"""Обходит все файлы и объединяет их содержимое в выходной файл."""
with output_file.open('w', encoding='utf-8') as outfile:
for file_path in current_dir.rglob('*'):
if file_path.is_file() and not should_exclude(file_path, prompt_dir, output_file):
print(f"Обработка: {file_path}")
outfile.write(f"=== Содержимое {file_path} ===\n")
try:
outfile.write(file_path.read_text(encoding='utf-8'))
except Exception as e:
print(f"Ошибка при чтении {file_path}: {e}")
outfile.write("\n\n")
print(f"Файлы объединены в '{output_file}'.")
def main():
# Определяем пути
current_dir = Path('.').resolve()
prompt_dir = current_dir / ".prompt"
gitignore_path = current_dir / ".gitignore"
# Шаг 1: Создаём директорию для промптов
create_prompt_dir(prompt_dir)
# Шаг 2: Обновляем .gitignore
update_gitignore(gitignore_path, prompt_dir)
# Шаг 3: Генерируем имя выходного файла
output_file = generate_log_filename(prompt_dir)
print(f"Имя выходного файла: '{output_file}'.")
# Шаг 4: Объединяем файлы
concatenate_files(output_file, current_dir, prompt_dir)
if __name__ == "__main__":
main()
Чеклист
Application
убрать аннотацию@EnableSpringDataWebSupport
favorite
,trip
,weather
. Внутри этих пакетов будет такая же структура (читая)WebConfig
)REBALANCE_THRESHOLD_PERCENT
ExportException
Доработать использование:
TripNotFoundException
: -- Выкидывание вынести на уровень сервисов -- Обрабатывать ошибки нужно в@ControlllerAdvice
:TripAlreadyExistsException
: