Files
NLP/lab1/scripts/collect_results.sh

57 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Упаковка результатов для передачи коллеге.
#
# Запуск из каталога lab1:
# bash scripts/collect_results.sh
#
# Создаёт exports/nlp_lab1_results_<timestamp>.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."