textmachine/eval/pkg7/termharness/build.sh

43 lines
1.8 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Собирает termharness КАК МОДУЛЬ ВНЕ РЕПО — та же схема, что у minerharness (см. его build.sh):
# исходник живёт в eval/ и потому ревьюируем, а go.mod + `replace` материализуются в рабочем каталоге
# вне git, так что второго go.mod в репозитории не появляется.
#
# ./build.sh <work-dir> [commit]
#
# Пин обязателен: `replace` смотрит в копию коммита (`git archive`), а не в рабочее дерево.
# Отличие от minerharness ровно одно — имя модуля и копируемый main.go; сознательно НЕ обобщал общий
# скрипт с параметром, чтобы не править файл, которым пинятся уже сданные цифры пакета-7.
set -euo pipefail
WORK="${1:?usage: build.sh <work-dir> [commit]}"
COMMIT="${2:-HEAD}"
REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
SHA="$(git -C "$REPO" rev-parse --short "$COMMIT")"
PIN="$WORK/pinned-$SHA"
MOD="$WORK/termharness"
mkdir -p "$PIN" "$MOD"
if [ ! -d "$PIN/backend" ]; then
git -C "$REPO" archive "$COMMIT" backend | tar -x -C "$PIN"
fi
cp "$(dirname "${BASH_SOURCE[0]}")/main.go" "$MOD/main.go"
cp "$PIN/backend/go.sum" "$MOD/go.sum"
{
echo "module textmachine/backend/termharness"
echo
sed -n '/^go /p' "$PIN/backend/go.mod"
echo
echo "require textmachine/backend v0.0.0"
echo
sed -n '/^require (/,/^)/p' "$PIN/backend/go.mod"
echo
echo "replace textmachine/backend => $PIN/backend"
} > "$MOD/go.mod"
cd "$MOD"
GOFLAGS=-mod=mod GOPROXY=off go build -o "$MOD/termharness" .
echo "built: $MOD/termharness (backend pinned at $SHA in $PIN/backend)"