57 lines
1.7 KiB
Bash
Executable File
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."
|