是否有任何聪明的方法可以从每个主要节点版本中获取最新版本jq
?还是我必须编写另一个包装外壳脚本来处理其输出?
我想要得到的(有三个主要版本:v8,v9和v10)最新版本:
v10.1.0
v9.11.1
v8.11.2
发布列表:
$ export repo='nodejs/node'
$ curl -s https://api.github.com/repos/${repo}/tags |jq -r ".[].name"
v10.1.0
v10.0.0
v9.11.1
v9.11.0
v9.10.1
v9.10.0
v9.9.0
v9.8.0
v9.7.1
v9.7.0
v9.6.1
v9.6.0
v9.5.0
v9.4.0
v9.3.0
v9.2.1
v9.2.0
v9.1.0
v9.0.0
v8.11.2
v8.11.1
v8.11.0
v8.10.0
v8.9.4
v8.9.3
v8.9.2
v8.9.1
v8.9.0
v8.8.1
v8.8.0
如果jq -r
使用以下过滤器将curl的输出传递到管道中,则无论curl结果中的版本号如何排序,都应该获取主要版本:
map(.name)
| map(split(".") | map(tonumber? // .) )
| group_by(.[0])
| map(sort)
| map( .[-1] | map(tostring) | join("."))
| .[]
如果您还希望对输出进行排序,只需先删除“ v”,然后再粘贴即可。为了通用起见,让我们定义一个函数,该函数将为每个主要版本输出最新的版本标签:
# Input: an array of "x.y.z..." strings,
# some or all components of which may be integers
# Output: a stream of the latest "major" releases
def majors:
map( split(".") | map(tonumber? // .))
| group_by(.[0])
| map(sort[-1])[]
| map(tostring)
| join(".") ;
map( .name[1:] ) | "v" + majors
$ jq -rf major-version.jq input.json
v8.11.2
v9.11.1
v10.1.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句