#!/usr/bin/env bash
set -euo pipefail

organization_id="${CODEUP_ORGANIZATION_ID:-60069db88deaa14d9e02b875}"
endpoint="${CODEUP_ENDPOINT:-devops.cn-hangzhou.aliyuncs.com}"
path_marker="/${CODEUP_HARDWARE_GROUP:-zhct/device/restaurant/}"
per_page="${CODEUP_PAGE_SIZE:-100}"
max_pages="${CODEUP_MAX_PAGES:-20}"

for command_name in aliyun jq; do
  if ! command -v "$command_name" >/dev/null 2>&1; then
    echo "Missing required command: $command_name" >&2
    exit 1
  fi
done

echo 'repo_name,codeup_path,description,last_activity_at,web_url'

for ((page = 1; page <= max_pages; page++)); do
  response="$(aliyun devops ListRepositories \
    --endpoint "$endpoint" \
    --organizationId "$organization_id" \
    --page "$page" \
    --perPage "$per_page")"

  page_count="$(jq '.result | length' <<<"$response")"
  if [[ "$page_count" -eq 0 ]]; then
    break
  fi

  jq -r --arg marker "$path_marker" '
    .result[]
    | select(.pathWithNamespace | contains($marker))
    | [
        .name,
        .pathWithNamespace,
        (.description // ""),
        (.lastActivityAt // ""),
        (.webUrl // "")
      ]
    | @csv
  ' <<<"$response"

  if [[ "$page_count" -lt "$per_page" ]]; then
    break
  fi
done
