#!/usr/bin/bash -e

export PLUGIN_ARGS="$@"

if [ -x /usr/bin/valkey-cli ]; then
  CLICMD=/usr/bin/valkey-cli
elif [ -x /usr/bin/keydb-cli ]; then
  CLICMD=/usr/bin/keydb-cli
elif [ -x /usr/bin/redis-cli ]; then
  CLICMD=/usr/bin/redis-cli
else
  echo "valkey CRITICAL - missing command valkey-cli"
  exit 1
fi

$CLICMD --raw info memory 2>&1 | gawk -F: '
  function get(key) {
    value = v[key]
    if (value=="") return ""
    return sprintf("%s=%sB", key, value)
  }
  BEGIN {
    error = "running"
    ret = 0
  }
  /^[a-z_]+:/ {
    gsub("\r", "", $2) # Fix CRLF generated strings.
    v[$1] = $2
    next
  }
  /^#/ { next }
  /^$/ { next }
  {
    error = $0
    ret = 2
  }
  END {
    reply = sprintf("|%s %s %s %s", \
      get("used_memory"), \
      get("used_memory_rss"), \
      get("used_memory_peak"), \
      get("maxmemory") \
    )
    if (ret==2) {
      print "valkey CRITICAL - " error reply
    } else if (ret==1) {
      print "valkey WARNING - " error reply
    } else {
      print "valkey OK - " error reply
    }
    exit ret
  }
'
