#!/usr/bin/env bash

set -uo pipefail
export LC_ALL=C

if (( $# != 1 )); then
  printf 'usage: %s ENDPOINT\n' "${0##*/}" >&2
  exit 64
fi

endpoint=$1
script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
fixture_root=${CONFIGARCHIVE_FIXTURE_ROOT:-$script_dir/../fixtures}
config_file=$fixture_root/$endpoint.config
status_file=$fixture_root/$endpoint.status

if [[ -f "$config_file" ]]; then
  # A failed fixture may deliberately contain partial device output.
  command cat "$config_file"
fi

if [[ -f "$status_file" ]]; then
  IFS= read -r fixture_status < "$status_file" || true
  if [[ "$fixture_status" =~ ^[1-9][0-9]*$ && "$fixture_status" -le 255 ]]; then
    printf 'local fixture reports %s unreachable\n' "$endpoint" >&2
    exit "$fixture_status"
  fi
  printf 'invalid local fixture status for %s\n' "$endpoint" >&2
  exit 65
fi

if [[ ! -f "$config_file" ]]; then
  printf 'no local fixture for %s\n' "$endpoint" >&2
  exit 69
fi
