#!/usr/bin/env bash set -euo pipefail script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" repo_root="$(cd -- "${script_dir}/.." && pwd)" compiler_dir="${repo_root}/compiler" cd "${repo_root}" git diff --check bash -n scripts/install.sh bash -n scripts/render-stdlib-api-doc.sh "${repo_root}/scripts/render-stdlib-api-doc.sh" git diff --check if ! git diff --quiet -- docs/language/STDLIB_API.md; then echo "standard library API catalog changed; review and commit generated docs before release" >&2 exit 1 fi required_pdfs=( "docs/papers/SLOVO_WHITEPAPER.pdf" "docs/papers/SLOVO_MANIFEST.pdf" "docs/papers/GLAGOL_WHITEPAPER.pdf" "docs/papers/GLAGOL_COMPILER_MANIFEST.pdf" ) for pdf in "${required_pdfs[@]}"; do if [ ! -s "${pdf}" ]; then echo "missing generated documentation artifact: ${pdf}" >&2 echo "run ./scripts/render-doc-pdfs.sh and commit the result" >&2 exit 1 fi done private_text_pattern='(/home/[[:alnum:]_.-]+|sanjin[0-9]+|[0-9]{1,3}\.64\.0\.1|git\.hermeticum\.io)' if git grep -nE "${private_text_pattern}" -- \ README.md CONTRIBUTING.md docs scripts compiler lib examples benchmarks tests .llm; then echo "release gate found local/private publication text" >&2 exit 1 fi if command -v pdftotext >/dev/null 2>&1; then pdf_text_dir="$(mktemp -d)" trap 'rm -rf "${pdf_text_dir}"' EXIT for pdf in "${required_pdfs[@]}"; do pdftotext "${pdf}" "${pdf_text_dir}/$(basename "${pdf}").txt" done if rg -n "${private_text_pattern}" "${pdf_text_dir}"; then echo "release gate found local/private text inside generated PDFs" >&2 exit 1 fi fi if [ "${RENDER_DOC_PDFS:-0}" = "1" ]; then "${repo_root}/scripts/render-doc-pdfs.sh" git diff --check if ! git diff --quiet -- docs/papers; then echo "documentation PDFs changed; review and commit generated artifacts before release" >&2 exit 1 fi fi cd "${compiler_dir}" cargo fmt --check # Full cargo test includes unignored integration gates such as dx_v1_7, # beta_v2_0_0_beta_1, and beta_1_0_0. cargo test cargo test --test promotion_gate -- --ignored cargo test --test binary_smoke -- --ignored cargo test --test llvm_smoke -- --ignored echo "release gate passed: docs, stdlib API catalog, fmt, tests, promotion, binary, and LLVM smoke checks completed"