#!/usr/bin/env bash # ia_dev — conf.json handling identical for every managed project (jq, secrets_path → SECRETS_BASE). # Add here any new deploy.* field that must be read the same way for all projects. # Do not put project-specific paths, hostnames, or phase ordering here beyond generic keys. # ia_dev_deploy_require_jq — exit 1 if jq missing (e.g. log_tag="[orchestrator]") ia_dev_deploy_require_jq() { local tag="${1:-[ia_dev][deploy]}" if ! command -v jq >/dev/null 2>&1; then echo "${tag}[ERROR] jq is required to read deploy.* from conf.json" >&2 exit 1 fi } # ia_dev_deploy_secrets_export_from_conf — export SECRETS_BASE + LECOFFRE_SECRETS_BASE when deploy.secrets_path is a directory ia_dev_deploy_secrets_export_from_conf() { local conf="${1:?}" local secrets_path secrets_path="$(jq -r '.deploy.secrets_path // empty' "$conf")" if [[ -n "$secrets_path" && "$secrets_path" != "null" && -d "$secrets_path" ]]; then export SECRETS_BASE="$secrets_path" export LECOFFRE_SECRETS_BASE="$secrets_path" fi } # ia_dev_deploy_export_runtime_context — required handoff to project orchestrator (blocking checks below) ia_dev_deploy_export_runtime_context() { local repo="${1:?}" local env="${2:?}" export IA_DEV_DEPLOY_REPO_ROOT="$repo" export IA_DEV_DEPLOY_ENV="$env" } # ia_dev_deploy_assert_handoff_context — exit 1 if exports missing or inconsistent (no fallback) ia_dev_deploy_assert_handoff_context() { local repo="${1:?}" local env="${2:?}" local tag="${3:-[orchestrator]}" if [[ -z "$repo" || ! -d "$repo" ]]; then echo "${tag}[ERROR] Handoff: repository root invalid or not a directory: ${repo}" >&2 exit 1 fi if [[ -z "$env" ]]; then echo "${tag}[ERROR] Handoff: env is empty" >&2 exit 1 fi if [[ "${IA_DEV_DEPLOY_REPO_ROOT:-}" != "$repo" ]]; then echo "${tag}[ERROR] Handoff: IA_DEV_DEPLOY_REPO_ROOT mismatch or unset (expected ${repo})" >&2 exit 1 fi if [[ "${IA_DEV_DEPLOY_ENV:-}" != "$env" ]]; then echo "${tag}[ERROR] Handoff: IA_DEV_DEPLOY_ENV mismatch or unset (expected ${env}, got ${IA_DEV_DEPLOY_ENV:-})" >&2 exit 1 fi }