寻找从最新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"