43 lines
1.8 KiB
Bash
Executable file
43 lines
1.8 KiB
Bash
Executable file
#!/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)"
|