如何获取我的 github 存储库的最新预发布版本 - bash

max*_*sme 6 bash github

要获取最新版本,我可以运行:

curl --silent "https://api.github.com/repos/maxisme/notifi/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/'
Run Code Online (Sandbox Code Playgroud)

但我想要最新版本的 tag_name ,即草稿/预发布?

0st*_*ne0 8

我们可以使用以下路线来获取所有版本

https://api.github.com/repos/maxisme/notifi/releases
Run Code Online (Sandbox Code Playgroud)

这样的 Json 工具,我们可以轻松过滤所有对象,仅显示那些 where prerelease: true,然后提取tag_name最新版本的 ,如下所示:

jq -r 'map(select(.prerelease)) | first | .tag_name'
Run Code Online (Sandbox Code Playgroud)

哪里:
JqPlay演示

  1. select(.prerelease)过滤到项目prerelease: true
  2. first获取版本数组中的第一个对象
  3. .tag_nametag_name显示键的值

将其与 bash 语句结合起来:

https://api.github.com/repos/maxisme/notifi/releases
Run Code Online (Sandbox Code Playgroud)

印刷:

jq -r 'map(select(.prerelease)) | first | .tag_name'
Run Code Online (Sandbox Code Playgroud)

如果您不确定prerelease项目中是否会有 a,我们可以为调用添加后备:

map(select(.prerelease)) | first | .tag_name // "Not found"
Run Code Online (Sandbox Code Playgroud)

现在将Not found显示.tag_nameprelease