我正在尝试使用
gh
查询 github api,并使用返回的 json 为我提供与我的搜索匹配的存储库列表,并且针对每个存储库,我想要一个需要编辑的文件名列表。
我可以像这样从 API 获取存储库列表:
gh api --method=GET "search/code?q=some-specific-string" | jq -r '[.items[] | { ( .repository.full_name ) : .path}]'
这给了我这样的结果:
[
{
"org-name/helm-charts": [
"README.md"
]
},
{
"org-name/repo-name": [
"file-name-1.py"
]
},
{
"org-name/repo-name": [
"file-name-2.py"
]
}
]
我正在尝试找到正确的方法来获取结果并合并它们,以便不存在重复的存储库名称,并且它们的列表被连接起来。所以我得到的结果如下:
[
{
"org-name/helm-charts": [
"README.md"
]
},
{
"org-name/repo-name": [
"file-name-1.py",
"file-name-2.py"
]
}
]
我该如何用 jq 做到这一点?我正在尝试寻找解决方案,但我无法表达我想要做的事情
您甚至可以使用
将所有内容收集到一个对象中gh … | jq 'reduce .items[] as $i ({}; .[$i.repository.full_name] += [$i.path])'
{
"org-name/helm-charts": [
"README.md"
],
"org-name/repo-name": [
"file-name-1.py",
"file-name-2.py"
]
}
如果您想要单独的单字段对象,请附加
to_entries | map([.] | from_entries)
对它们进行排序。