Хочу создавать репозитории в Gitea через CLI

4 min

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

Здравствуйте, я бездарь.
Я хочу делать push на Github и также на Gitea, но это хлопотно, поэтому я хочу иметь возможность управлять этим из CLI.
Дело в том, что я не зеркалирую все как зеркало Github, а просто хочу иметь возможность легко делать push в определенной степени.

Выпуск API-ключа

Выпустите API-ключ в Gitea.
images

API-запрос с помощью curl

Вставлять URL-адрес curl каждый раз слишком хлопотно, поэтому я сделаю это функцией.
Добавьте следующее в .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"}

Я предоставил права на чтение и запись для репозитория, но, похоже, также требуются права на запись для пользователя.

Получилось

Итак, поскольку необходимо передать булево значение, указывающее, является ли это приватным репозиторием, во втором аргументе, я создам репозиторий таким образом.

ga testrepo false

Но в этом случае возвращаемое значение JSON слишком длинное.
Мне нужно только значение удаленного 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 и подобных можно отключить с помощью опции, но как отключить это отображение прогресса при передаче через пайп?

Related Posts