# 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"

validate_reference_expectations() {
  local brief_path="$1"
  local reference_expectations_file="$2"
  local expected_task_key="$3"

  python3 "$OKSTRA_VALIDATOR_CHECKS/validate-tasks-01.py" "$brief_path" "$reference_expectations_file" "$expected_task_key"
}

validate_task_artifacts() {
  local task_group="$1"
  local task_id="$2"
  local expected_task_key=""
  local expected_task_manifest_relative_path=""
  local expected_reference_relative_path=""

  expected_task_key="$(task_key "$task_group" "$task_id")"
  expected_task_manifest_relative_path="$(task_manifest_relative_path "$task_group" "$task_id")"
  expected_reference_relative_path="$(reference_expectations_relative_path "$task_group" "$task_id")"

  python3 "$OKSTRA_VALIDATOR_CHECKS/validate-tasks-02.py" "$PROJECT_ROOT" "$expected_task_key" "$expected_task_manifest_relative_path" "$expected_reference_relative_path" "$TASK_CATALOG_RELATIVE_PATH"
}

validate_latest_task_pointer() {
  local task_group="$1"
  local task_id="$2"
  local expected_task_key=""
  local expected_task_manifest_relative_path=""
  local expected_reference_relative_path=""

  expected_task_key="$(task_key "$task_group" "$task_id")"
  expected_task_manifest_relative_path="$(task_manifest_relative_path "$task_group" "$task_id")"
  expected_reference_relative_path="$(reference_expectations_relative_path "$task_group" "$task_id")"

  python3 "$OKSTRA_VALIDATOR_CHECKS/validate-tasks-03.py" "$PROJECT_ROOT" "$DISCOVERY_FILE" "$expected_task_key" "$expected_task_manifest_relative_path" "$expected_reference_relative_path" "$TASK_CATALOG_RELATIVE_PATH"
}

validate_task_catalog() {
  local expected_latest_task_key="$1"
  shift
  local expected_task_keys=("$@")

  python3 "$OKSTRA_VALIDATOR_CHECKS/validate-tasks-04.py" "$PROJECT_ROOT" "$CATALOG_FILE" "$expected_latest_task_key" "$LATEST_TASK_RELATIVE_PATH" "${expected_task_keys[@]}"
}
