74 lines
1.7 KiB
Shell
74 lines
1.7 KiB
Shell
select_fixture_families() {
|
|
local requested=("$@")
|
|
local family
|
|
local candidate
|
|
local found
|
|
local use_all=false
|
|
FIXTURE_FAMILIES=()
|
|
if [[ "${#requested[@]}" = 0 ]]; then
|
|
requested=(all)
|
|
fi
|
|
for family in "${requested[@]}"; do
|
|
case "$family" in
|
|
all) use_all=true ;;
|
|
base | durable | coordination | oidc | target) ;;
|
|
*)
|
|
printf 'unknown fixture family: %s\n' "$family" >&2
|
|
return 1
|
|
;;
|
|
esac
|
|
done
|
|
if [[ "$use_all" = true ]]; then
|
|
requested=(durable coordination oidc target)
|
|
fi
|
|
for candidate in durable coordination oidc target; do
|
|
found=false
|
|
for family in "${requested[@]}"; do
|
|
if [[ "$family" = "$candidate" ]]; then
|
|
found=true
|
|
fi
|
|
done
|
|
if [[ "$found" = true ]]; then
|
|
FIXTURE_FAMILIES+=("$candidate")
|
|
fi
|
|
done
|
|
}
|
|
|
|
fixture_has_family() {
|
|
local expected="$1"
|
|
local family
|
|
for family in "${FIXTURE_FAMILIES[@]}"; do
|
|
if [[ "$family" = "$expected" ]]; then
|
|
return
|
|
fi
|
|
done
|
|
return 1
|
|
}
|
|
|
|
expand_fixture_matrix() {
|
|
local coordination_providers=(-)
|
|
local oidc_providers=(-)
|
|
local target_providers=(-)
|
|
local coordination
|
|
local oidc
|
|
local target
|
|
local lane=0
|
|
select_fixture_families "$@" || return
|
|
if fixture_has_family coordination; then
|
|
coordination_providers=(redis dragonfly)
|
|
fi
|
|
if fixture_has_family oidc; then
|
|
oidc_providers=(keycloak zitadel)
|
|
fi
|
|
if fixture_has_family target; then
|
|
target_providers=(garage versitygw)
|
|
fi
|
|
for coordination in "${coordination_providers[@]}"; do
|
|
for oidc in "${oidc_providers[@]}"; do
|
|
for target in "${target_providers[@]}"; do
|
|
lane=$((lane + 1))
|
|
printf '%03d\t%s\t%s\t%s\n' "$lane" "$coordination" "$oidc" "$target"
|
|
done
|
|
done
|
|
done
|
|
}
|