$ cat "dev63.hatenablog.com/entry/2025/12/13/005710.md"
// ブログエントリー — 2025/12/13

ghコマンドでリポジトリを10個ずつprivateにする

USER="{ユーザー名}"

repos=$(gh repo list $USER --source --limit 1000 --json name --jq '.[].name')

count=0
batch=()

for repo in $repos; do
  batch+=("$repo")
  count=$((count + 1))

  if [ $count -eq 10 ]; then
    echo "==== 次の 10 件 ===="
    printf '%s\n' "${batch[@]}"
    echo "=================="

    read -p "この 10 件を Private に変更しますか? (y/n) " yn
    if [ "$yn" = "y" ]; then
      for r in "${batch[@]}"; do
        gh repo edit "$USER/$r" \
          --visibility private \
          --accept-visibility-change-consequences
      done
      echo " -> 10 件変更しました。"
    else
      echo " -> スキップしました。"
    fi

    batch=()
    count=0
  fi
done

if [ ${#batch[@]} -gt 0 ]; then
  echo "==== 残りのリポジトリ ===="
  printf '%s\n' "${batch[@]}"
  echo "=========================="

  read -p "これらを Private に変更しますか? (y/n) " yn
  if [ "$yn" = "y" ]; then
    for r in "${batch[@]}"; do
      gh repo edit "$USER/$r" \
        --visibility private \
        --accept-visibility-change-consequences
    done
    echo " -> 残りも変更しました。"
  else
    echo " -> スキップしました。"
  fi
fi

ENTRY: dev63.hatenablog.com/entry/2025/12/13/005710.md
DATE: 2025/12/13
WORDS: 149