GiteaをCLI上でレポジトリをcreateしたい

2 min read

こんにちは、無能です。
Github上でpushしながらGiteaにもPushしたいけど、めんどくさいからCLIからも操作できるようにしたい。
というのも、Githubのミラーとしてすべてをミラーリングしているわけでもなくある程度楽にPushできるようにしたいだけである。

APIキーの発行

GiteaでAPIキーを発行する。
images

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とかのプログレス表示ってオプションでオフにできるけど、パイプで渡したときのこのプログレス表示はどうやって消すんだろう。

PGP --- Contact --- Machines