【发布时间】:2021-07-05 11:59:54
【问题描述】:
我正在使用curl 和jq 从 Github API 获取 PR 批准列表,以便在满足条件时在每个 PR 中添加标签。我有几个条件:
- 批准数量必须至少为 2 并且
- 我提供的列表中必须有一个批准人。
事实上,一切都运行良好,但我想美化我的代码,例如将列表作为参数传递,而不是在代码中硬编码。我在下面尝试过,但由于以下原因无法正常工作:
jq: 错误(at :1):无法迭代字符串(“joedoe”)
response=$(curl \
-H "Accept: application/vnd.github.v3+json" \
--request GET \
--url https://api.github.com/repos/my-organization/my-repo/pulls/my-pr-number/reviews \
--header "Authorization: token ***" \
--header "Content-Type: application/json")
requiredViewers=("joedoe", "johnsmith", "johnstiles")
echo $response | jq --arg items $requiredViewers '( map( select( .state=="APPROVED" ) ) |
map( { user: .user.login, state: .state, submitted_at: .submitted_at } ) |
unique_by( .user ) |
sort_by( .submitted_at ) |
reverse ) |
any( .[].user; . |
IN ( $items[] --> this is not working ) ) and
length>=2'
我查看了关于 SO 的类似帖子,但不幸的是无法使其正常工作。我的问题是,如何将列表作为参数传递并使其像硬编码一样工作?
【问题讨论】:
标签: arrays shell curl environment-variables jq