Gitea를 CLI에서 레포지토리를 생성하고 싶다
안녕하세요, 무능입니다.
Github에서 push하면서 Gitea에도 Push하고 싶은데, 귀찮으니까 CLI에서도 조작할 수 있도록 하고 싶다.
왜냐하면, Github의 미러로서 모든 것을 미러링하는 것이 아니라 어느 정도 쉽게 Push할 수 있도록 하고 싶을 뿐이다.
API 키 발행
Gitea에서 API 키를 발행한다.

curl로 API 요청
매번 curl URL을 붙여넣는 것은 너무 귀찮으므로 함수화한다.
.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"}
repository 읽기, 쓰기 권한을 주었지만 사용자 쓰기 권한도 필요한 것 같다.
성공했다
그래서 두 번째 인수에 프라이빗 레포지토리인지 여부의 bool 값을 전달해야 하므로 이런 식으로 레포지토리를 만든다.
ga testrepo false
하지만 이렇게 하면 JSON으로 돌아오는 값이 너무 길다.
remote 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 같은 진행 표시를 옵션으로 끌 수 있는데, 파이프로 전달했을 때 이 진행 표시는 어떻게 없애는 걸까?