Je veux créer un dépôt Gitea via la CLI
Bonjour, je suis incompétent.
Je veux pousser sur Gitea en même temps que sur Github, mais c'est fastidieux, alors je veux pouvoir le faire depuis la CLI.
En fait, je ne veux pas tout mettre en miroir comme un miroir Github, je veux juste pouvoir pousser plus facilement.
Émission de la clé API
Émettez une clé API dans Gitea.

Requête API avec curl
Coller l'URL de curl à chaque fois est trop fastidieux, alors je vais en faire une fonction.
Ajoutez ce qui suit à .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
}"
}
Charger
source ~/.bashrc
Et quand je l'ai exécuté, j'ai eu une erreur.
$ 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"}
J'ai donné les droits de lecture et d'écriture pour le dépôt, mais il semble que les droits d'écriture pour l'utilisateur soient également nécessaires.
Ça a marché
Donc, comme il est nécessaire de passer une valeur booléenne pour indiquer si c'est un dépôt privé ou non comme deuxième argument, je vais créer le dépôt comme ceci.
ga testrepo false
Mais avec ça, la valeur renvoyée en JSON est trop longue.
Je n'ai besoin que de la valeur de l'URL distante, alors je vais l'extraire avec 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
}
Finalement
$ 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"
On peut désactiver l'affichage de la progression pour des commandes comme wget avec une option, mais comment désactiver cet affichage de progression quand on le passe via un pipe ?