#!/usr/bin/env bash set -euo pipefail usage() { cat >&2 <<'EOF' Usage: bash data-setup/run_data_setup.sh Optional maintenance modes: --dry-run check setup scripts only --build-test rebuild inputs from existing local sources --compare compare regenerated inputs with committed data/ EOF } if [ "$#" -gt 1 ]; then usage exit 1 fi MODE="${1:---full-test}" repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" cd "$repo_root" case "$MODE" in --dry-run|--build-test|--compare|--full-test) ;; *) usage exit 1 ;; esac export PARTY2D_RAW_DATA_DIR="${PARTY2D_RAW_DATA_DIR:-$repo_root/_local/raw}" export PARTY2D_BUILD_DIR="${PARTY2D_BUILD_DIR:-$repo_root/_local/build}" export PARTY2D_GENERATED_INPUT_DIR="${PARTY2D_GENERATED_INPUT_DIR:-$repo_root/_local/generated-inputs}" export PARTY2D_REPORT_DIR="${PARTY2D_REPORT_DIR:-$repo_root/_local/reports}" export R_LIBS_USER="${R_LIBS_USER:-$repo_root/_local/R/library}" mkdir -p "$R_LIBS_USER" if [ "$MODE" = "--dry-run" ]; then echo "Checking data-setup scripts only; no downloads and no rebuild." command -v bash >/dev/null command -v Rscript >/dev/null bash -n data-setup/check_raw_data.sh Rscript -e 'files <- list.files("data-setup/R", pattern="\\.R$", full.names=TRUE); invisible(lapply(files, parse)); cat("R setup scripts parse OK\n")' echo "Data setup dry run passed." exit 0 fi if [ "$MODE" = "--compare" ]; then Rscript data-setup/R/03_compare_generated_inputs.R exit 0 fi bash data-setup/check_raw_data.sh rm -rf "$PARTY2D_BUILD_DIR" "$PARTY2D_GENERATED_INPUT_DIR" mkdir -p "$PARTY2D_BUILD_DIR" "$PARTY2D_GENERATED_INPUT_DIR" Rscript data-setup/R/00_install_dependencies.R Rscript data-setup/R/02_build_model_inputs.R Rscript data-setup/R/03_compare_generated_inputs.R