#!/usr/bin/env bash source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" source "$PLUGIN_AVAILABLE_PATH/proxy/functions" set -eo pipefail [[ $DOKKU_TRACE ]] && set -x cmd-proxy-label-show() { declare desc="show a proxy label for an app" declare cmd="proxy:label:show" [[ "$1" == "$cmd" ]] && shift 1 declare PROXY="$1" APP="$2" PASSED_LABEL_NAME="$3" shift 2 if [[ -n "$PASSED_LABEL_NAME" ]]; then fn-proxy-show-label "$PROXY" "$APP" "$PASSED_LABEL_NAME" return fi fn-proxy-display-labels "$PROXY" "$APP" return 0 } cmd-proxy-label-add() { declare desc="adds container label to app for specified proxy" declare PROXY="$1" APP="$2" PASSED_LABEL_NAME="$3" PASSED_LABEL_VALUE="$4" if [[ -z "$PASSED_LABEL_NAME" ]]; then dokku_log_fail "Please specify a container label for the app" fi if [[ -z "$PASSED_LABEL_VALUE" ]]; then dokku_log_fail "Please specify a value for the container label" fi local proxy_labels_file_path="$(fn-proxy-get-labels-file-path "$PROXY" "$APP")" touch "$proxy_labels_file_path" cmd-proxy-label-remove "$PROXY" "$APP" "$PASSED_LABEL_NAME" >/dev/null echo "--label '${PASSED_LABEL_NAME}=${PASSED_LABEL_VALUE}' " >>"$proxy_labels_file_path" local all_proxy_labels="$(<"$proxy_labels_file_path")" echo -e "${all_proxy_labels}" | sed '/^$/d' | sort -u >"$proxy_labels_file_path" } cmd-proxy-label-remove() { declare desc="removes container label from app for specified proxy" declare PROXY="$1" APP="$2" PASSED_LABEL_NAME="$3" if [[ -z "$PASSED_LABEL_NAME" ]]; then dokku_log_fail "Please specify a container label for the app" fi local proxy_labels_file_path="$(fn-proxy-get-labels-file-path "$PROXY" "$APP")" if [[ ! -s "$proxy_labels_file_path" ]]; then return fi local all_proxy_labels="$(<"$proxy_labels_file_path")" local escaped_label_name="$(fn-proxy-escape-extended-sed "$PASSED_LABEL_NAME")" local all_proxy_labels="$(echo -e "${all_proxy_labels}" | sed -E "s/^--label ['\"]${escaped_label_name}=.*\$//")" echo -e "${all_proxy_labels}" | sed '/^$/d' | sort -u >"$proxy_labels_file_path" } cmd-proxy-label() { declare desc="manage proxy labels for an app" declare cmd="proxy:label" shift 1 # the command comes from the upstream plugin declare PROXY="$1" ACTION="$2" APP="$3" PASSED_LABEL_NAME="$4" PASSED_LABEL_VALUE="$5" [[ -z "$PROXY" ]] && dokku_log_fail "Error invoking proxy:label command" verify_app_name "$APP" if [[ -n "$PASSED_LABEL_NAME" ]] && [[ ! "$PASSED_LABEL_NAME" =~ ^$PROXY ]]; then dokku_log_fail "Please specify a valid $PROXY label name for the app" fi if [[ "$action" == "show" ]]; then cmd-proxy-label-show "$PROXY" "$APP" "$PASSED_LABEL_NAME" return 0 elif [[ "$ACTION" == "set" ]]; then cmd-proxy-label-add "$PROXY" "$APP" "$PASSED_LABEL_NAME" "$PASSED_LABEL_VALUE" elif [[ "$action" == "unset" ]]; then cmd-proxy-label-remove "$PROXY" "$APP" "$PASSED_LABEL_NAME" else dokku_log_fail "Please specify a valid action ('set', 'unset' or 'show')" fi }