#!/bin/sh

set -eu

usage() {
  echo "Usage: debci config [OPTIONS] [KEY] [KEY ..]"
  echo
  echo "Display the values for all or the passed KEYs"
  echo
  echo "Options:"
  echo
  echo "  -l, --all           Display all keys"
  echo "  -v, --values-only   Display only the values corresponding to the given keys"
  echo
  echo "$@"
}

short_options='vl'
long_options='values-only,all'

debci_base_dir=$(readlink -f $(dirname $(readlink -f $0))/..)
cd $debci_base_dir
. lib/environment.sh

all_keys=false
values_only=false

while true; do
  arg="$1"
  shift
  case "$arg" in
    -v|--values-only)
      values_only=true
      ;;
    -l|--all)
      all_keys=true
      ;;
    --)
      break
      ;;
  esac
done

if [ "$#" -eq 0 ] &&
   [ "$all_keys" != true ]; then
  usage
  exit 1
fi

keys=$*
if [ "$all_keys" = true ]; then
  keys="$(set | awk -F '=' '/^debci_/ {print $1}' | sed 's/^debci_//' )"
fi

notfound=0
for key in ${keys}; do
  eval "value=\"\${debci_${key}:-}\""
  eval "set=\"\${debci_${key}+set}\""
  if [ -n "$set" ]; then
    if [ "$values_only" = true ]; then
      echo "$value"
    else
      echo "$key=$value"
    fi
  else
    echo "E: key $key not found!" >&2
    notfound=$(expr $notfound + 1)
  fi
done

exit $notfound
