#!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/docker-options/functions"
source "$PLUGIN_AVAILABLE_PATH/storage/functions"

storage_help_content_func() {
    declare desc="return storage plugin help content"
    cat<<help_content
    storage:list <app>, List bind mounts for app's container(s) (host:container)
    storage:mount <app> <host-dir:container-dir>, Create a new bind mount
    storage:report [<app>] [<flag>], Displays a checks report for one or more apps
    storage:unmount <app> <host-dir:container-dir>, Remove an existing bind mount
help_content
}

storage_help_cmd() {
  if [[ $1 = "storage:help" ]] ; then
    echo -e 'Usage: dokku storage[:COMMAND]'
    echo ''
    echo 'Mount local volume / directories inside containers.'
    echo ''
    echo 'Additional commands:'
    storage_help_content_func | sort | column -c2 -t -s,
  elif [[ $(ps -o command= $PPID) == *"--all"* ]]; then
    storage_help_content_func
  else
    cat<<help_desc
    storage, Mount local volume / directories inside containers
help_desc
  fi
}

storage_list_cmd() {
  declare desc="List all bound mounts"
  local cmd="storage:list"
  local passed_phases="deploy"
  [[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
  verify_app_name "$2" && local APP="$2"
  echo "$APP volume bind-mounts:"
  get_bind_mounts "$(get_phase_file_path "$passed_phases")"
}
