Ich möchte ein Repository über die CLI in Gitea erstellen
Hallo, ich bin unfähig.
Ich möchte auf Gitea pushen, während ich auf Github pushe, aber es ist mühsam, also möchte ich es auch über die CLI bedienen können.
Das liegt daran, dass ich nicht alles als Github-Spiegel spiegeln möchte, sondern nur in gewisser Weise einfach pushen können möchte.
API-Schlüssel generieren
Generieren Sie einen API-Schlüssel in Gitea.

API-Anfrage mit curl
Es ist zu mühsam, die curl-URL jedes Mal einzufügen, also werde ich sie in eine Funktion umwandeln.
Fügen Sie Folgendes zu .bashrc hinzu:
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
}"
}
Laden Sie es:
source ~/.bashrc
Und als ich es ausführte, gab es einen Fehler.
$ 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"}
Ich habe Lese- und Schreibzugriff auf das Repository gewährt, aber es scheint, dass auch Schreibberechtigungen für den Benutzer erforderlich sind.
Es hat geklappt
Daher muss ich einen booleschen Wert für das zweite Argument übergeben, der angibt, ob es sich um ein privates Repository handelt, und das Repository wie folgt erstellen:
ga testrepo false
Aber der JSON-Rückgabewert ist zu lang.
Ich brauche nur den Wert der Remote-URL, also extrahiere ich ihn mit 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
}
Endgültig
$ 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"
Der Fortschrittsbalken von wget und ähnlichem kann mit einer Option deaktiviert werden, aber wie kann ich diesen Fortschrittsbalken deaktivieren, wenn er über eine Pipe übergeben wird?