Quiero crear un repositorio en Gitea desde la CLI
Hola, soy un inútil.
Mientras hago push en Github, también quiero hacer push en Gitea, pero es molesto, así que quiero poder operarlo desde la CLI.
La razón es que no estoy espejeando todo como un espejo de Github, solo quiero poder hacer push con cierta facilidad.
Emisión de la clave API
Emitir una clave API en Gitea.

Solicitud API con curl
Pegar la URL de curl cada vez es demasiado molesto, así que lo convertiré en una función.
Añade lo siguiente a .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
}"
}
Cargar
source ~/.bashrc
Y cuando lo ejecuté, obtuve un error.
$ 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"}
Le di permisos de lectura y escritura al repositorio, pero parece que también se necesita permiso de escritura de usuario.
Funcionó
Así que, como es necesario pasar un valor booleano para el segundo argumento indicando si es un repositorio privado o no, creo el repositorio de esta manera.
ga testrepo false
Pero con esto, el valor que devuelve JSON es demasiado largo.
Solo necesito el valor de la URL remota, así que lo extraeré con 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
}
Finalmente
$ 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"
Por cierto, la visualización del progreso de comandos como wget se puede desactivar con una opción, pero ¿cómo se desactiva esta visualización de progreso cuando se pasa por una tubería?