मैं CLI पर Gitea रिपॉजिटरी बनाना चाहता हूँ

4 min

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

नमस्ते, मैं अक्षम हूँ।
मैं GitHub पर पुश करते समय Gitea पर भी पुश करना चाहता हूँ, लेकिन यह बहुत परेशानी भरा है, इसलिए मैं इसे CLI से भी संचालित करने में सक्षम होना चाहता हूँ।
ऐसा इसलिए है क्योंकि मैं GitHub के दर्पण के रूप में सब कुछ दर्पण नहीं कर रहा हूँ, मैं बस कुछ हद तक आसानी से पुश करने में सक्षम होना चाहता हूँ।

API कुंजी जारी करना

Gitea में एक API कुंजी जारी करें।
images

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"}

मैंने रिपॉजिटरी को पढ़ने और लिखने की अनुमति दी, लेकिन ऐसा लगता है कि उपयोगकर्ता को लिखने की अनुमति भी आवश्यक है।

यह काम कर गया

तो, दूसरे तर्क के रूप में एक बूलियन मान पास करना आवश्यक है कि क्या यह एक निजी रिपॉजिटरी है, इसलिए मैं इस तरह से एक रिपॉजिटरी बनाऊँगा।

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