#!/bin/bash
# -*- mode: sh; sh-basic-offset: 2; indent-tabs-mode: nil; -*-
# vim:set ft=sh et sw=2 ts=2:
#
# nsupdate-mock for test scripts
#

err() {
  local IFS; unset IFS
  printf >&2 "%s\n" "$*"
}

fail() {
  local -i rc=0
  [[ $1 != 0 ]] && { printf 2>/dev/null -v rc "%d" "$1" || rc=1; }
  shift
  [[ $1 ]] && { if [[ $rc == 0 ]]; then echo "$@"; else err "$@"; fi; }
  exit "$rc"
}

[[ ${NSUPDATE_MOCK_FAIL-} || ${NSUPDATE_MOCK_OUTPUT-} ]] && {
  args='' arg=''; for arg in "$@"; do args+="${args:+ }'${arg}'"; done
  fail "${NSUPDATE_MOCK_FAIL:-0}" \
       "${NSUPDATE_MOCK_OUTPUT+${NSUPDATE_MOCK_OUTPUT/@ARGS@/${args}}}"
}

# echo commands if requested
if [[ ${MOCK_ECHO-} ]]; then
  out='nsupdate' arg=''
  for arg in "$@"; do out+=" '${arg}'"; done
  printf '%s\n' "${out}"
  command -p cat -
fi

exit 0
