Quiero crear un repositorio en Gitea desde la CLI

4 min

language: ja bn en es hi pt ru zh-cn zh-tw

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.
images

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?

Related Posts