#!/bin/sh -efu
VER=0.0
. shell-error
. shell-args
PROG=ddcutil-profile
PROFDIR=/etc/ddcutil
RELINK="`dirname "$0"`/relink"
SYSCONFDIR="/etc"
RUNFILE="/run/profile.current"

show_help() {
  printf "TODO help\n"
  test "$#" -lt 1 && exit 0 || :
  test "$1" -gt 0 && exit $1 || :
}

print_version() {
  printf "$PROG v. $VER\n"
}

OPTS="f:"
LOPTS="file:"
INFILE=""
CMDLINEOPTS=`getopt -n $PROG -o "$OPTS,$getopt_common_opts" -l "$LOPTS:,$getopt_common_longopts" -- "$@"` || show_usage
eval set -- "$CMDLINEOPTS"

while :; do
  case "$1" in
    -f|--file) shift; INFILE="$1";;
    --) shift; break;;
    *) parse_common_option "$1";;
  esac
  shift
done

if [ -r "$INFILE" ]; then
  FULLID="`awk -f $0.awk < "$INFILE"`"
else
  FULLID="`ddcutil detect | awk -f $0.awk`"
fi

if [ $# = 0 ]; then
    echo "$FULLID"
    exit
fi

case "$1" in
  show) 
    echo "$FULLID";;
  store) 
    PFILE="$PROFDIR/$2.profile"
    mkdir -p "$PROFDIR"
    echo "$FULLID" > "$PFILE"
    message "Stored to $PFILE"
    ;;
  detect)
    for P in `find "$PROFDIR" -maxdepth 1 -name *.profile`; do
      if echo "$FULLID" | cmp -s "$P"; then
	echo `basename "$P" .profile` | tee "$RUNFILE"
        break
      fi
    done
    ;;
  find)
    "$RELINK" find "$PROFDIR" "$SYSCONFDIR" ;;
  erase)
    "$RELINK" erase "$PROFDIR" "$SYSCONFDIR" ;;
  link)
    test $# -gt 1 && PROFILE="$2" || PROFILE=`"$0" detect`
    test -z "$PROFILE" || "$RELINK" link "$PROFDIR/$PROFILE" "$SYSCONFDIR"
    ;;
  *) 
    fatal "Invalid command $1";;
esac
