Bash脚本从GitHub下载最新版本



寻找从最新GitHub版本下载.zip的简单方法。还有其他类似的问题,但我还没能让它们工作。(

尝试从https://github.com/CTCaer/hekate获取最新版本

目前我得到:

#!/bin/bash
curl -s https://api.github.com/repos/CTCaer/hekate/releases/latest | jq -r ".assets[] | select(.name | test("hekate_ctcaer")) | .browser_download_url"

试图获取最新的。zip的url,只抓取"hekate_ctcaer_X.X.X_Nyx_X.X.X.zip">

我看到有人试图用'Xidel'来实现这一点,所以我愿意尝试,如果有人知道从GitHub api中抓取特定文件的语法。

据我所知,Github API为发布'assets'吐出一个数组,所以我试图在这个数组中指定一个与' hekate_ctcaer '匹配的项目,并下载指定的文件。

Github也是一个兼容的git仓库。我提供了一个新的思路。

  • 使用git ls-remote获取最新版本标签。
git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' http://github.com/CTCaer/hekate.git
| tail --lines=1
| cut --delimiter='/' --fields=3

这里这个例子输出v5.8.0

  • 然后克隆远程repo
git clone --branch v5.8.0 http://github.com/CTCaer/hekate.git
  • zip repos到压缩文件。
zip hekate.zip -r hekate/

这将打印出最新版本的zip文件的url:

curl -sL https://api.github.com/repos/CTCaer/hekate/tags 
| jq -r '.[0].zipball_url' 
| xargs -I {} curl -sL {} -o latest.zip

我看到有人试图用'Xidel'实现这一点

我想你指的是我的回答。这个答案被标记为批处理文件,所以你首先必须交换bash ("function('string')"—>'function("string")')。其次,你是对的。您必须在"assets"数组"中选择合适的对象。

$ xidel -s "https://api.github.com/repos/CTCaer/hekate/releases/latest" 
-f '$json/(assets)()[starts-with(name,"hekate_ctcaer")]/browser_download_url' 
--download '{substring-after($headers[starts-with(.,"Content-Disposition")],"filename=")}'

'hekate_ctcaer_5.8.0_Nyx_1.3.0.zip'下载到当前目录。
使用r8389或更新版本,您可以使用--download .

我还将如何修改以下内容:github.com/Atmosphere-NX/Atmosphere/releases/tag/1.3.2 .zip和.bin

严格来说,你必须提出一个新的问题,但是好吧。

看起来(目前)v1.3.2也是这个仓库的最新版本,所以你可以使用…

$ xidel -s "https://api.github.com/repos/Atmosphere-NX/Atmosphere/releases/latest" 
-e '$json'

或者……

$ xidel -s "https://api.github.com/repos/Atmosphere-NX/Atmosphere/releases" 
-e '$json()[tag_name="1.3.2"]'

这里的"assets"数组只有两个对象;一个是zip-file文件,一个是bin-file文件,所以只要"跟着"就行了。(--follow/-f) 2 "browser_download_url"-键下载:

$ xidel -s "https://api.github.com/repos/Atmosphere-NX/Atmosphere/releases" 
-f '$json()[tag_name="1.3.2"]//browser_download_url' 
--download .

很抱歉打断这个话题,但这是我从$owner最新版本的$repo下载文件$file的看法

与windows上的git-bash兼容(没有rev…)

echo "fetching latest version"
latest_version=`
curl https://github.com/$owner/$repo/releases/latest --verbose 2>&1 |
grep Location |
sed -e "s|.*/v||"`
echo "version: $latest_version"
# if the version number is in the file name, append it
# example:
# file=somefile-$latest_version.ext
link="https://github.com/$owner/$repo/releases/download/v$latest_version/$file"
echo "$link"
curl -o "destination/folder/$file" -L "$link"

相关内容

最新更新