#!/usr/bin/env bash
[[ " docker-options docker-options:add docker-options:remove help docker-options:help " == *" $1 "* ]] || exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_CORE_AVAILABLE_PATH/docker-options/functions"

declare APP # global assigned in case

case "$1" in
  # Display applications docker options
  docker-options)
    verify_app_name "$2" && APP="$2"
    read -ra passed_phases <<< "$(get_phases "$3")"
    if [[ ! "${passed_phases[@]}" ]]; then
      display_all_phases_options
    else
      display_passed_phases_options passed_phases[@]
    fi
  ;;

  # Add a docker option to application
  docker-options:add)
    verify_app_name "$2" && APP="$2"
    read -ra passed_phases <<< "$(get_phases "$3")"
    shift 3 # everything else passed is the docker option
    passed_docker_option="$*"
    [[ -z "$passed_docker_option" ]] && dokku_log_fail "Please specify docker options to add to the phase"
    add_passed_docker_option passed_phases[@] "${passed_docker_option[@]}"
  ;;

  # Remove a docker option from application
  docker-options:remove)
    verify_app_name "$2" && APP="$2"
    read -ra passed_phases <<< "$(get_phases "$3")"
    shift 3 # everything else passed is the docker option
    [[ -z ${passed_docker_option="$@"} ]] && dokku_log_fail "Please specify docker options to add to the phase"
    remove_passed_docker_option passed_phases[@] "${passed_docker_option[@]}"
  ;;

  # Display usage help
  help | docker-options:help)
    cat<<EOF
    docker-options <app>, Display app's Docker options for all phases
    docker-options <app> <phase(s)>, Display app's Docker options for phase (comma separated phase list)
    docker-options:add <app> <phase(s)> OPTION, Add Docker option to app for phase (comma separated phase list)
    docker-options:remove <app> <phase(s)> OPTION, Remove Docker option from app for phase (comma separated phase list)
EOF
  ;;

  *)
    exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
  ;;

esac
