#!/bin/ksh
#
# OSSTech Hyper Estraier Nodemaster for Chimera Search
#
# chkconfig: - 84 16
# chkconfig.debian: 2345 91 09
# description: Hyper Estraier Nodemaster for Chimera Search
#
### BEGIN INIT INFO
# Provides:		osstech-chimera-estmaster
# Required-Start:	$network $local_fs osstech-svscan
# Required-Stop:	$network $local_fs osstech-svscan
# Should-Start:		samba osstech-smb
# Should-Stop:
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
### END INIT INFO

. /etc/init.d/svinit || exit 1

sv_name="chimera-estmaster"
estmaster_user_default="root"
estcmd_cmd="/opt/osstech/bin/estcmd"

function sv_db {
  local sv_dir=$(sv_dir "$1"); shift
  local cmd="${1-}"; [ $# -ge 1 ] && shift

  local est_nodedir
  est_nodedir="$(sv_env "$sv_dir" ROOTDIR)/_node" || pdie "ROOTDIR not set"

  case "$cmd" in
  list)
    ls "$est_nodedir"
    ;;
  *)
    local est_status
    est_status=$(sv_status "$sv_dir") && pdie "$est_status"

    local est_dbname="${1-}"; [ $# -ge 1 ] && shift
    if [ -n "$est_dbname" ]; then
      local est_db="$est_nodedir/$est_dbname"
      [ -d "$est_db" ] || pdie "DB not found: $est_db"
      local est_user=$(ls -ld "$est_db" |awk '$3!="root" {print $3}')
    else
      cmd="usage"
    fi
    case "$cmd" in
    repair)
      cd $est_nodedir
      for db in $(ls .); do
        ${est_user:+setuidgid "$est_user"} "$estcmd_cmd" repair ${1+"$@"} $db
      done
      return $?
      ;;
    remove)
      ## Old GNU rm has a bug that requires the readable current directory
      (cd / && ${est_user:+setuidgid "$est_user"} rm -r ${1+"$@"} ${est_db}*)
      return $?
      ;;
    *)
      echo "Usage: $sv_argv0 db list"
      echo "Usage: $sv_argv0 db {repair|remove} DBNAME [OPTION ...]"
      return 3
      ;;
    esac
  esac
}

sv_init "$sv_name" ${1+"$@"}

