use-bedrock() {
  local force=0

  while getopts "f" opt; do
    case $opt in
      f) force=1 ;;
      *) echo "Usage: use-bedrock [-f]" >&2; return 1 ;;
    esac
  done
  OPTIND=1

  if [[ "$force" -eq 0 ]] && [[ -n "$AWS_ACCESS_KEY_ID" ]] && [[ -n "$AWS_SECRET_ACCESS_KEY" ]]; then
    echo "AWS credentials already set. Skipping Bedrock setup. Use -f to force re-authentication." >&2
    return
  fi

  aws sso login --use-device-code || return 1

  local creds
  creds=$(aws configure export-credentials --format env) || return 1
  eval "$creds"

  export CLAUDE_CODE_USE_BEDROCK=1
  export CLAUDE_BEDROCK_AWS_REGION="${AWS_REGION:-us-east-2}"
  export ANTHROPIC_DEFAULT_OPUS_MODEL="${BEDROCK_OPUS_MODEL:-us.anthropic.claude-opus-4-7-v1}"
  export ANTHROPIC_DEFAULT_SONNET_MODEL="${BEDROCK_SONNET_MODEL:-us.anthropic.claude-sonnet-4-6}"
  export ANTHROPIC_DEFAULT_HAIKU_MODEL="${BEDROCK_HAIKU_MODEL:-us.anthropic.claude-haiku-4-5-20251001-v1:0}"

  unset CLAUDE_CODE_USE_VERTEX

  printf 'Bedrock environment set.\n\tOpus:   %s\n\tSonnet: %s\n\tHaiku:  %s\n' \
    "$ANTHROPIC_DEFAULT_OPUS_MODEL" "$ANTHROPIC_DEFAULT_SONNET_MODEL" "$ANTHROPIC_DEFAULT_HAIKU_MODEL" >&2
}
