GiteaをCLI上でレポジトリをcreateしたい
2 min read
こんにちは、無能です。
Github上でpushしながらGiteaにもPushしたいけど、めんどくさいからCLIからも操作できるようにしたい。
というのも、Githubのミラーとしてすべてをミラーリングしているわけでもなくある程度楽にPushできるようにしたいだけである。
APIキーの発行
GiteaでAPIキーを発行する。
curlでAPIリクエスト
毎回curlのURLを貼るのはめんどくさすぎるので関数化する。
.bashrc
に以下を記載する
ga() {
curl -X POST "https://git.domain.tld/api/v1/user/repos" \
-H "Content-Type: application/json" \
-H "Authorization: token GITEA_API_TOKEN" \
-d "{
\"name\": \"$1\",
\"private\": $2
}"
}
読み込む
source ~/.bashrc
そして実行したら怒られた。
$ ga test false
{"message":"token does not have at least one of required scope(s), required=[write:user], token scope=write:repository","url":"https://git.domain.tld/api/swagger"}
repositoryの読み取り、書き込みを与えたけどユーザの書き込み権限も必要みたい。
いけた
というわけで、第二引数にプライベートレポジトリかどうかのbool値を渡す必要があるのでこんな感じにしてレポジトリを作る
ga testrepo false
でも、これだとjsonで帰ってくる値が長すぎる。
remote urlの値だけでいいのでjq
で抽出する
ga() {
curl -X POST "https://git.domain.tld/api/v1/user/repos" \
-H "Content-Type: application/json" \
-H "Authorization: token GITEA_API_TOKEN" \
-d "{
\"name\": \"$1\",
\"private\": $2
}" |\
jq .ssh_url
}
最終的に
$ ga testa false
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2227 0 2180 100 47 2471 53 --:--:-- --:--:-- --:--:-- 2524
"ssh://git@git.domain.tld:port/haturatu/testa.git"
なんかwget
とかのプログレス表示ってオプションでオフにできるけど、パイプで渡したときのこのプログレス表示はどうやって消すんだろう。