openclaw/scripts/lib/live-docker-auth.sh

96 lines
2.2 KiB
Bash

#!/usr/bin/env bash
OPENCLAW_DOCKER_LIVE_AUTH_ALL=(.claude .codex .minimax .qwen)
openclaw_live_trim() {
local value="${1:-}"
value="${value#"${value%%[![:space:]]*}"}"
value="${value%"${value##*[![:space:]]}"}"
printf '%s' "$value"
}
openclaw_live_normalize_auth_dir() {
local value
value="$(openclaw_live_trim "${1:-}")"
[[ -n "$value" ]] || return 1
value="${value#.}"
printf '.%s' "$value"
}
openclaw_live_should_include_auth_dir_for_provider() {
local provider
provider="$(openclaw_live_trim "${1:-}")"
case "$provider" in
anthropic)
printf '%s\n' ".claude"
;;
codex-cli | openai-codex)
printf '%s\n' ".codex"
;;
minimax | minimax-portal)
printf '%s\n' ".minimax"
;;
qwen | qwen-portal-auth)
printf '%s\n' ".qwen"
;;
esac
}
openclaw_live_collect_auth_dirs_from_csv() {
local raw="${1:-}"
local token normalized
local -A seen=()
[[ -n "$(openclaw_live_trim "$raw")" ]] || return 0
IFS=',' read -r -a tokens <<<"$raw"
for token in "${tokens[@]}"; do
while IFS= read -r normalized; do
[[ -n "$normalized" ]] || continue
if [[ -z "${seen[$normalized]:-}" ]]; then
printf '%s\n' "$normalized"
seen[$normalized]=1
fi
done < <(openclaw_live_should_include_auth_dir_for_provider "$token")
done
}
openclaw_live_collect_auth_dirs_from_override() {
local raw token normalized
raw="$(openclaw_live_trim "${OPENCLAW_DOCKER_AUTH_DIRS:-}")"
[[ -n "$raw" ]] || return 1
case "$raw" in
all)
printf '%s\n' "${OPENCLAW_DOCKER_LIVE_AUTH_ALL[@]}"
return 0
;;
none)
return 0
;;
esac
IFS=',' read -r -a tokens <<<"$raw"
for token in "${tokens[@]}"; do
normalized="$(openclaw_live_normalize_auth_dir "$token")" || continue
printf '%s\n' "$normalized"
done | awk '!seen[$0]++'
return 0
}
openclaw_live_collect_auth_dirs() {
if openclaw_live_collect_auth_dirs_from_override; then
return 0
fi
printf '%s\n' "${OPENCLAW_DOCKER_LIVE_AUTH_ALL[@]}"
}
openclaw_live_join_csv() {
local first=1 value
for value in "$@"; do
[[ -n "$value" ]] || continue
if (( first )); then
printf '%s' "$value"
first=0
else
printf ',%s' "$value"
fi
done
}