🐟

【fish】githubのリポジトリを一括削除

2022/07/24に公開

はじめに

未経験から入社して半年、やっと業務に慣れ始めたある日のこと....

タロウ: (....!!!!!)
    (ツヨツヨな先輩たち、あんな草生やしてるのに、公開してるリポジトリは少ない!!!)
    (なんか、とりあえず作ったものを全部あげている私が恥ずかしくなってきたゾ!!!!)
    (だが、GUIで消していくには量が多すぎる!!!)

ということで、ひとつの機能のために作ったサンプルプログラムなど、細々したものを一括で削除するプログラムを書いてみましたとさ👏

(ほぼコチラのfish版ですが、何卒mm)

事前準備

  • fishのセットアップ
  • github cliのセットアップ
  • ディレクトリの作成

(最後に参考記事として、以前読んでわかりやすかった記事等、載せています🙏)

リポジトリ構成

-
|- delete_repo.sh
|- .env
|- delete_target.txt
-

コード解説

(解説なんざ、要らねぇんだよ!!! 早くコードよこさんかい!!! という方はコチラから🙇)
https://github.com/tamashiro-syuta/clean_github_repository

github cliのaliasを作成

aliasコマンドを設定

(terminal)
gh alias set repo-delete 'api -X DELETE "repos/$1"'

上で設定したコマンドの実行に必要な権限を付与

(terminal)
gh auth refresh -h github.com -s delete_repo

使用するファイルの作成

(terminal)
touch .env delete_target.txt delete_repo.sh

以下、それぞれのファイルの用途です
.env => 環境変数をセット
delete_target.txt => 削除する対象を載せる
delete_repo.sh => 実際にリポジトリを削除する

.envに自分のgithubのユーザーネームを追加

(githubに挙げるようで.envを作りましたので、個人で使うだけでしたら以降出てくるdelete_repo.shに直書きするか、実行前に環境変数をセットするでも良いかと思います)

(.env)
set USER_NAME hogehoge

リポジトリを削除するプログラムを記述

(delete_repo.sh)

# .envファイルを読み込み
source ./.env

# delete_target.txtから1行ずつ取得
while read line do
  # 削除するリポジトリをセット
  set reponame $USER_NAME"/"$line
  # 上で定義したaliasを実行
  gh repo-delete $reponame
  echo "Delete "$reponame
end < delete_target.txt

github cliのコマンドを利用して、delete_target.txtに、ファイルを書き込み

--languageオプションなどで絞り込むのもアリ
(筆者はswiftが多かったので、--language swiftで絞り込みました)

(terminal)
gh repo list --json name --jq '.[].name' >> delete_repo.txt

4.delete_target.txtから、残したいリポジトリを削除

5.お掃除タイム(削除)

(terminal)
fish delete_repo.sh

参考記事

Discussion