# shellcheck shell=bash

# 이 lib 은 단독으로 source 될 수 있다(계약 테스트가 그렇게 부른다). checks
# 경로 계산은 common.sh 한 곳에만 두고, 없으면 여기서 채운다.
# shellcheck source=common.sh
[ -n "${OKSTRA_VALIDATOR_CHECKS:-}" ] || . "$(cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common.sh"

run_okstra() {
  local task_group="$1"
  local task_id="$2"
  local brief_filename="$3"
  shift 3

  if (($# > 0)); then
    local -a extra_args=("$@")
    bash "$OKSTRA_SCRIPT" \
      --render-only \
      --yes \
      --task-type "$TASK_TYPE" \
      --project-id "$PROJECT_ID" \
      --project-root "$PROJECT_ROOT" \
      --task-group "$task_group" \
      --task-id "$task_id" \
      --task-brief "$brief_filename" \
      "${extra_args[@]}"
    return
  fi

  bash "$OKSTRA_SCRIPT" \
    --render-only \
    --yes \
    --task-type "$TASK_TYPE" \
    --project-id "$PROJECT_ID" \
    --project-root "$PROJECT_ROOT" \
    --task-group "$task_group" \
    --task-id "$task_id" \
    --task-brief "$brief_filename"
}

run_validator_expectation() {
  local task_group="$1"
  local task_id="$2"
  local expected_status="$3"
  local expected_failure_substring="${4-}"
  local expected_task_manifest_relative_path=""

  expected_task_manifest_relative_path="$(task_manifest_relative_path "$task_group" "$task_id")"

  python3 "$OKSTRA_VALIDATOR_CHECKS/runners-01.py" "$PROJECT_ROOT" "$expected_task_manifest_relative_path" "$RUN_VALIDATOR_PATH" "$expected_status" "$expected_failure_substring"
}
