#!/bin/bash BASEPATH="$(dirname "$0")" source $BASEPATH/.env blacklist=() while IFS= read -r line; do # Add each line to the array blacklist+=("$line") done < "$BASEPATH/path-blacklist.txt" # Parse Docker Compose file to get all services services=$(cat $BASEPATH/$1.yml | yaml2json - | jq -r '.services | keys | .[]') for service in $services; do labels=($(cat "$BASEPATH/$1.yml" | yaml2json - | jq -r ".services[\"$service\"].labels[]")) for label in "${labels[@]}"; do if [[ "$label" == *"stripprefix.prefixes"* ]]; then path=$(echo "$label" | cut -d "=" -f 2) break # Stop looping after finding the first match fi done include=true for word in "${blacklist[@]}"; do if echo "$path" | grep -qE "$word"; then include=false fi done if $include; then # IFS=$'\t' read -r -a labels <<< $(cat "$BASEPATH/$1.yml" | yaml2json | jq -r ".services[\"$service\"].labels[]") for label in "${labels[@]}"; do if [[ "$label" == *"loadbalancer.server.port"* ]]; then port=$(echo "$label" | cut -d "=" -f 2) echo "$service:$port" #print("Value after '=' for the first string containing 'loadbalancer.server.port':", port) break # Stop looping after finding the first match fi done fi done #echo "No service found with the specified labels." exit 1