#!/usr/bin/env bash # Упаковка результатов для передачи коллеге. # # Запуск из каталога lab1: # bash scripts/collect_results.sh # # Создаёт exports/nlp_lab1_results_.tar.gz и файл SHA-256. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" cd "${PROJECT_ROOT}" PYTHON="${PYTHON:-python}" RUN_ID="${RUN_ID:-$(date +%Y%m%d_%H%M%S)}" OUT_DIR="${OUT_DIR:-${PROJECT_ROOT}/exports}" ARCHIVE="${OUT_DIR}/nlp_lab1_results_${RUN_ID}.tar.gz" MANIFEST="${OUT_DIR}/nlp_lab1_results_${RUN_ID}_manifest.txt" mkdir -p "${OUT_DIR}" { echo "Дата: $(date)" echo "Каталог: ${PROJECT_ROOT}" echo "Интерпретатор: ${PYTHON}" echo "${PYTHON}" scripts/check_environment.py || true echo if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then echo "Git commit: $(git rev-parse HEAD 2>/dev/null || echo 'нет коммита')" else echo "Git: репозиторий не инициализирован" fi echo echo "Содержимое results:" find results -maxdepth 2 -type f | sort | head -n 500 } > "${MANIFEST}" INCLUDE=() for path in results features data/processed data/metadata; do if [[ -e "${path}" ]]; then INCLUDE+=("${path}") fi done INCLUDE+=("${MANIFEST#"${PROJECT_ROOT}/"}") tar -czf "${ARCHIVE}" "${INCLUDE[@]}" sha256sum "${ARCHIVE}" > "${ARCHIVE}.sha256" echo "Архив: ${ARCHIVE}" echo "Контрольная сумма: ${ARCHIVE}.sha256" echo "Манифест: ${MANIFEST}" echo echo "Передайте коллеге архив и файл .sha256."