#!/usr/bin/env bash set -euo pipefail # dev-materialize.sh — локально материализовать сгенерированный код стенда в provider/. # # Кладёт в provider/ ЭФЕМЕРНУЮ копию (git-ignored), чтобы штатно работали # go build / go test / IDE. Это НЕ путь релиза: релиз собирается только через # 03_build_and_upload_provider.sh (temp-копия со свежесгенерированным кодом). # # Использование: # ./TOOLS/scripts/dev-materialize.sh dev # dev | test | prod # # Требует предварительной генерации: # TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/ STAND="${1:-}" if [[ -z "$STAND" ]]; then echo "Usage: $0 # dev | test | prod" >&2 exit 2 fi SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="${ROOT_DIR:-$(cd "${SCRIPT_DIR}/../.." && pwd)}" GEN_GO_DIR="${ROOT_DIR}/generated/${STAND}/go" GEN_YAML_DIR="${ROOT_DIR}/generated/${STAND}/resources_yaml" PROV_GO_DIR="${ROOT_DIR}/provider/internal/resources_gen" PROV_YAML_DIR="${ROOT_DIR}/provider/resources_yaml" if [[ ! -d "$GEN_GO_DIR" ]]; then echo "ERROR: no generated go for stand '${STAND}': $GEN_GO_DIR" >&2 echo " Run: TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/${STAND}" >&2 exit 2 fi if [[ ! -d "$GEN_YAML_DIR" ]]; then echo "ERROR: no generated yaml for stand '${STAND}': $GEN_YAML_DIR" >&2 exit 2 fi # 1) Go-ресурсы. mkdir -p "$PROV_GO_DIR" find "$PROV_GO_DIR" -maxdepth 1 -type f -name '*.go' -delete cp -R "$GEN_GO_DIR"/*.go "$PROV_GO_DIR/" # 2) YAML-спеки + embed.go (нужны для go:embed в resources_core). mkdir -p "$PROV_YAML_DIR" find "$PROV_YAML_DIR" -maxdepth 1 -type f \( -name '*.yaml' -o -name 'embed.go' \) -delete cp -a "$GEN_YAML_DIR"/*.yaml "$PROV_YAML_DIR/" cp "$GEN_YAML_DIR"/embed.go "$PROV_YAML_DIR/embed.go" 2>/dev/null || true # 3) Маркер стенда — чтобы не спутать, какой стенд лежит в provider/. printf '%s\n' "$STAND" > "$PROV_GO_DIR/.stand" echo "Materialized stand '${STAND}' into provider/ (internal/resources_gen + resources_yaml)." echo "This copy is ephemeral and git-ignored. Release build always uses 03_build_and_upload_provider.sh."