#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x

shell_cmd() {
  declare desc="dokku shell interpreter via command line"
  local cmd="shell"
  local INPUTRC="$PLUGIN_ROOT/inputrc"
  local HISTFILE=~/.dokku_history

  history -r || true

  trim()
  {
    sed -e 's/^[[:space:]]*//g' -e 's/[[:space:]]*$//g'
  }

  trap 'history -w' EXIT

  while true; do
    trap '' SIGINT
    read -rep "dokku> " line || {
      echo; true; break
    }
    trap - SIGINT

    local line=$(echo "$line" | trim)
    local CMD=$(echo "$line" | awk '{ print $1 }')

    [[ -z $CMD ]] && continue

    [[ "$line" != "$(fc -ln -1 | trim)" ]] && history -s "$line"

    case $CMD in
      # shell builtins
      clear)
        clear
        ;;

      quit|exit)
        break
        ;;

      # Not a built-in, run as regular dokku command
      *)
        # shellcheck disable=SC2086
        dokku $line || true
    esac

  done
}

shell_cmd
