#!/usr/bin/env bash set -eo pipefail [[ $DOKKU_TRACE ]] && set -x source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" fn-proxy-escape-extended-sed() { # Escaped delimiter is '/' local input="$1" echo "$input" | sed -E 's#[][()\.^$?*+{}|/]#\\&#g' } fn-proxy-report-label-overwrite() { declare desc="overwrite proxy labels file with new labels" declare LABELS="$1" PROXY_LABELS_FILE_PATH="$2" if [[ -f "$PROXY_LABELS_FILE_PATH" ]]; then local DONE=false until $DONE; do local line read -r line || local DONE=true [[ -z "$line" ]] && continue case "$line" in \#*) continue ;; --label*) local label_name="$(echo "$line" | sed -E "s/^--label ['\"]([^=]+)=.*/\1/")" local escaped_label_name="$(fn-proxy-escape-extended-sed "$passed_label_name")" local match="$(echo "$LABELS" | sed -E "s/.*--label ['\"]($escaped_label_name)=.*/\1/")" if [[ -n "$match" ]]; then dokku_log_warn "Dokku label \"$match\" will be overwritten by user-set proxy label." fi continue ;; *) dokku_log_warn "Invalid line '$line' in proxy label file $PROXY_FILE_PATH" ;; esac done <"$PROXY_LABELS_FILE_PATH" fi } fn-proxy-get-labels-file-path() { declare desc="return proxy labels config file path for specified proxy" declare PROXY="$1" APP="$2" local PROXY_FILE="${DOKKU_LIB_ROOT}/config/${PROXY}/${APP}/labels" echo "$PROXY_FILE" } fn-proxy-display-labels() { declare desc="print user-set app container labels for specified proxy" declare PROXY="$1" APP="$2" local proxy_labels_file_path="$(fn-proxy-get-labels-file-path "$PROXY" "$APP")" echo "${PROXY^} labels:" sed -e 's/^/ /' "$proxy_labels_file_path" } fn-proxy-show-label() { declare desc="print single user-set app container label for specified proxy" declare PROXY="$1" APP="$2" PASSED_LABEL_NAME="$3" 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 proxy_label_value="$(echo -e "${all_proxy_labels}" | sed -E -n "s/^--label ['\"]${escaped_label_name}=(.*)['\"] \$/\1/p")" echo "$proxy_label_value" }