Quero criar um repositório no Gitea via CLI
Olá, sou um incompetente.
Quero fazer push para o Gitea enquanto faço push para o Github, mas é muito chato, então quero poder operá-lo a partir da CLI.
Isso porque não estou espelhando tudo como um espelho do Github, apenas quero poder fazer push com alguma facilidade.
Emissão da Chave API
Emita uma chave API no Gitea.

Requisição API com curl
Colar a URL do curl toda vez é muito chato, então vou transformá-la em uma função.
Adicione o seguinte ao .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
}"
}
Carregar
source ~/.bashrc
E quando executei, recebi um erro.
$ 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"}
Eu dei permissões de leitura e escrita para o repositório, mas parece que também são necessárias permissões de escrita para o usuário.
Funcionou
Então, como é necessário passar um valor booleano para o segundo argumento indicando se é um repositório privado, vou criar o repositório assim:
ga testrepo false
Mas, com isso, o valor retornado em JSON é muito longo.
Preciso apenas do valor da URL remota, então vou extraí-lo com 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"
A exibição de progresso de wget e outros pode ser desativada com uma opção, mas como desativar essa exibição de progresso quando passada por um pipe?