ターゲット

ターゲット

ターゲット

とを含む.owner.login(Github REST APIのパラメータ)という名前のサブディレクトリにリポジトリを複製しますjqgit clonexargs


ヘッダー

jqおよびを使用してリポジトリを複製できるコードがどこかにあります。ただし、各リポジトリに対して新しい親ディレクトリを作成するように設定することはできません。 (私はWindowsユーザーですが、このbashスクリプトに加えて達成しようとしている他の解決策についてクエリすることはできません。GNUコマンドがどのようにやり取りするのかわかりません。git clonexargs

オリジナルコード

UserName=CHANGEME; \
curl -s "https://api.github.com/users/$UserName/repos?per_page=1000" |\
    jq -r '.[].html_url' |\
    xargs -l git clone

私の修正は次のとおりです。

UserName=CHANGEME; \
curl -s "https://api.github.com/users/$UserName/repos?per_page=1000" |\
    jq -r '.[] | .html_url, .full_name' |\
    xargs -l git clone

元のコードと同じ結果を得ます。次のエラーログもあります。 fatal: repository 'repoauthor/reponame?' does not exist

私はそれがどこから来たのかわかりません\?

だからデバッグをしようとしています。

コードを分けて

UserName=CHANGEME; \
curl -s "https://api.github.com/users/$UserName/repos?per_page=1000" |\
    jq -r '.[] | .html_url, .full_name'

次を返します。

https://github.com/repo1name/repo1author
repo1name/repo1author
https://github.com/repo2name/repo2author
repo2name/repo2author
... etc

1つではなく2つの異なる行に返されます.html_url.full_name

xargsこれが問題だと思いましたが、一人で走ってみました。

https://github.com/repoauthor/reponame |\
xargs -l git clone

ちょうどgitのヘルプファイルに移動します。

長すぎます。

生成された文字列をjqxargsjq

ベストアンサー1

特定の問題を再現するために特定のGithubユーザーを提供していないため、個人的に知っている他のGithubアカウントを使用してテストしました。

あなたの試みには2つの主な問題があります。

  1. xargs理想的には、読んだ各主張を引用する必要があります。
  2. xargsこれはgit clone、ストレージURLとそれを複製するターゲットディレクトリという2つの個別のパラメータを使用して呼び出す必要があります。

次のようにパラメータへの参照を整理できます。

curl -s "https://api.github.com/users/$UserName/repos?per_page=1000" |
jq -r '.[] | [ .html_url, .full_name ] | @sh'

これは、要求に対する応答から必要な情報を配列にcurl抽出し、@sh演算子を使用して各配列をシェル引用語行に出力します。

厳密に言えば、.[] | .html_url, .full_name | @shas式を使用して単一のシェル引用符付き文字列を含む行ストリームを取得することもできます。どのように使用するかは重要ではありませんjqxargs

この単語ストリームが与えられたら、git cloneviaを呼び出しますxargs

xargs -n 2 git clone

この-n 2メソッドは、xargs入力ストリームで一度に2つの引数を使用してユーティリティを呼び出します。

総合してみると:

curl -s "https://api.github.com/users/$UserName/repos?per_page=1000" |
jq -r '.[] | [ .html_url, .full_name ] | @sh' |
xargs -n 2 git clone

おすすめ記事