🐟
【fish】githubのリポジトリを一括削除
はじめに
未経験から入社して半年、やっと業務に慣れ始めたある日のこと....
タロウ: (....!!!!!)
(ツヨツヨな先輩たち、あんな草生やしてるのに、公開してるリポジトリは少ない!!!)
(なんか、とりあえず作ったものを全部あげている私が恥ずかしくなってきたゾ!!!!)
(だが、GUIで消していくには量が多すぎる!!!)
ということで、ひとつの機能のために作ったサンプルプログラムなど、細々したものを一括で削除するプログラムを書いてみましたとさ👏
(ほぼコチラのfish版ですが、何卒mm)
事前準備
- fishのセットアップ
- github cliのセットアップ
- ディレクトリの作成
(最後に参考記事として、以前読んでわかりやすかった記事等、載せています🙏)
リポジトリ構成
-
|- delete_repo.sh
|- .env
|- delete_target.txt
-
コード解説
(解説なんざ、要らねぇんだよ!!! 早くコードよこさんかい!!! という方はコチラから🙇)
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
delete_target.txt
に、ファイルを書き込み
github cliのコマンドを利用して、--language
オプションなどで絞り込むのもアリ
(筆者はswiftが多かったので、--language swift
で絞り込みました)
(terminal)
gh repo list --json name --jq '.[].name' >> delete_repo.txt
delete_target.txt
から、残したいリポジトリを削除
4.5.お掃除タイム(削除)
(terminal)
fish delete_repo.sh
Discussion