如何过滤语言以使用 curl 克隆多个 GitHub 存储库?
How to filter language for cloning multiple GitHub repositories with curl?
我在一家拥有大约 500 个企业存储库的组织工作 GitHub。我发现了一些 curl 可以一次克隆所有存储库,但我似乎无法找到一种方法来按语言过滤脚本。这是我正在使用的卷曲:
curl -s -H "Authorization: token [token]" https://github.[company].com/api/v3/orgs/[organization]/repos?page=1&per_page=100 | jq '.[].ssh_url' | xargs -n 1 git clone
克隆每个存储库效果很好,但显然当我只需要特定语言时效率不高。我已经尝试了我在搜索中看到的所有变体,例如包括 /search/repositories/ 字符串,以及 ?language= 和?q=language:参数中的URL。它只是完全跳过过滤器,仍然 returns 完整的回购列表,为组织提供基本的 JSON 响应,或者返回一条 "Not Found" 消息。
有谁知道在这种情况下如何按语言过滤,或者有更好的解决方案来克隆多个按语言过滤的存储库?我正在尝试在 Jenkins and/or Docker 中自动化一些需要在所有目标存储库中搜索和解析的进程。
谢谢
我不知道是否可以将其作为 API 请求的一部分进行过滤,但您当然可以使用 jq
执行过滤。例如,我可以获得我的 Python 项目的 SSH url 列表,如下所示:
curl -s -H "Authorization: token $token" https://api.github.com/user/repos |
jq '.[]|select(.language = "Python").ssh_url'
我在一家拥有大约 500 个企业存储库的组织工作 GitHub。我发现了一些 curl 可以一次克隆所有存储库,但我似乎无法找到一种方法来按语言过滤脚本。这是我正在使用的卷曲:
curl -s -H "Authorization: token [token]" https://github.[company].com/api/v3/orgs/[organization]/repos?page=1&per_page=100 | jq '.[].ssh_url' | xargs -n 1 git clone
克隆每个存储库效果很好,但显然当我只需要特定语言时效率不高。我已经尝试了我在搜索中看到的所有变体,例如包括 /search/repositories/ 字符串,以及 ?language= 和?q=language:参数中的URL。它只是完全跳过过滤器,仍然 returns 完整的回购列表,为组织提供基本的 JSON 响应,或者返回一条 "Not Found" 消息。
有谁知道在这种情况下如何按语言过滤,或者有更好的解决方案来克隆多个按语言过滤的存储库?我正在尝试在 Jenkins and/or Docker 中自动化一些需要在所有目标存储库中搜索和解析的进程。
谢谢
我不知道是否可以将其作为 API 请求的一部分进行过滤,但您当然可以使用 jq
执行过滤。例如,我可以获得我的 Python 项目的 SSH url 列表,如下所示:
curl -s -H "Authorization: token $token" https://api.github.com/user/repos |
jq '.[]|select(.language = "Python").ssh_url'