nabeo がピーしているブログ (仮)

どーも、nabeop です

ある github organization のリポジトリを手元に持ってくる時に使っているアレ

github apigh api で呼び出していい感じに

  • 手元になければ ghq get して、デフォルトブランチを設定する
  • アーカイブ済みのリポジトリは消していいかを聞いてから消す

ということをしてくれる。

#!/usr/bin/env zsh

for repo in $( gh api --paginate --jq '.[] | select( .archived != true ) | .full_name' "/orgs/${org_name}/repos" ); do
  repodir=$( ghq list -p -e "${repo}" )
  if [ "x${repodir}" == "x" ]; then
    ghq get "git@github.com:${repo}.git"
    pushd "${repodir}"
    git config --local init.defaultBranch $( gh api "/repos/${repo}" --jq '.default_branch' )
    popd
  fi
done

for repo in $( gh api --paginate --jq '.[] | select( .archived == true ) | .full_name' "/orgs/${org_name}/repos" ); do
  repodir=$( ghq list -p -e "${repo}" )
  if [ "x${repodir}" != "x" ]; then
    echo "remove ${repo}? (y/N): "; read -q && rm -rf "${repodir}"
  fi
done

${org_name} は目的の Organization を入れる。