我想获取我们组织 github 中所有私有存储库的列表。我试过 -
curl -u user:pw -X GET https://api.github.com/orgs/xxx/repos?per_page=100 >> list.txt
我发现per_page最大值为 100,如何将所有存储库放入一个文件中?
Thanks
您可以使用 bash 脚本循环遍历每个页面,直到到达的最后一页为空。
过滤器可以用以下方式完成jq https://stedolan.github.io/jq/JSON 解析器来过滤私有存储库,您还可以排除分叉存储库或任何您想要的内容。
请注意,我正在使用个人访问令牌 https://github.com/settings/tokens用于身份验证(获取私人仓库):
#!/bin/bash
# change those vars :
GITHUB_ORG=docker
GITHUB_ACCESS_TOKEN=12345666799897950400303332323
OUTPUT_FILE=repo_list.json
loop=0
index=1
TMP_FILE=tmpfile.txt
PER_PAGE=100
rm -f $TMP_FILE
echo "[]" > $OUTPUT_FILE
while [ "$loop" -ne 1 ]
do
data=`curl -s "https://api.github.com/orgs/$GITHUB_ORG/repos?access_token=$GITHUB_ACCESS_TOKEN&page=$index&per_page=$PER_PAGE"`
check_error=`echo "$data" | jq 'type!="array"'`
if [ "$check_error" == "true" ]; then
echo "access token is invalid"
exit 1
fi
filtered=`echo "$data" | jq '[ .[] | select(.private == true) ]'`
if [ "$filtered" == "[]" ]; then
loop=1
else
echo "$filtered" > $TMP_FILE
concat=`jq -s add $TMP_FILE $OUTPUT_FILE`
echo "$concat" > $OUTPUT_FILE
size=`jq '. | length' $OUTPUT_FILE`
echo "computed $index page - fetched total repo size of : $size"
index=$((index+1))
fi
done
如果只想拥有存储库 URL 数组而不是整个 JSON 对象,请替换:
jq '[ .[] | select(.private == true) ]'
with :
jq '[ .[] | select(.private == true) | .html_url ]'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)