#!/usr/bin/env bash #!/usr/bin/env bash CONFIG="" COMMAND="" SLEEP_SECONDS=0 usage() { echo "Usage: $0 --config --command [--sleep default 0]" } while [[ $# -gt 0 ]]; do case "$1" in --config) CONFIG="$2" shift 2 ;; --command) COMMAND="$2" shift 2 ;; --sleep) SLEEP_SECONDS="$2" shift 2 ;; -h|--help) usage exit 0 ;; *) echo "Unknown argument: $1" >&2 usage >&2 exit 1 ;; esac done if [[ -z "$CONFIG" ]]; then echo "Missing --config" >&2 usage >&2 exit 1 fi if [[ ! -f "$CONFIG" ]]; then echo "Config file not found: $CONFIG" >&2 exit 1 fi if [[ -z "$COMMAND" ]]; then echo "Missing --command" >&2 usage >&2 exit 1 fi required_commands="jq hjson" for cmd in ${required_commands}; do if ! command -v $cmd >/dev/null 2>&1; then echo "Error: $cmd is required but not installed" >&2 _env_is_sourced && return 1 || exit 1 fi done pairs="$(hjson -j "${CONFIG}" | jq -r '.pairs | keys_unsorted | join(" ")')" echo "Pairs: ($pairs)" for pair in ${pairs[@]}; do echo "Starting ${pair} ..." source ./env.sh --config $CONFIG --pair ${pair} echo "docker compose -p ${PROJECT_NAME} ${COMMAND}" docker compose -p ${PROJECT_NAME} ${COMMAND} # echo "Sleeping ${SLEEP_SECONDS} seconds ..." sleep ${SLEEP_SECONDS} done