使用 GitHub API 自动化包编译过程
Automating package compile process using GitHub API
所以,我想创建一个 shell 脚本来自动执行下载包、解压缩、CD 进入、配置和从源代码编译的过程。
我从下面的一个简单脚本开始:
#!/bin/bash
PROJ=ruby
curl https://api.github.com/repos/$PROJ/$PROJ/tags -o $PROJ.json
cat $PROJ.json | grep -Po '(?<="name": ")[^"]*'
这会获取 Ruby 项目的 JSON 文件,以及 returns 最新的(?)标签名称(例如 ruby_2_3_1)。
但是,我很笨,我想在这个脚本上做更多的扩展。我愿意:
忽略任何不包含单词 "ruby"
的标签
只获取最新的标签(在这个例子中,2_3_1)
获取标签 2_3_1 的 URL 并从该标签下载源代码的 tarball
解压压缩包(除非它检测到这个压缩包之前已经被解压过)
剩下的我可以自己完成,因为我对 ./configure、make、make install 等相当熟悉
希望这不会太困难。我宁愿 而不是 使用 jq(只是标准的正则表达式),但如果使用 jq 更容易,我也可以。
在 https://api.github.com/repos/ruby/ruby/tags 我没有在任何标签名称中看到 ruby 这个词。
标签按名称倒序排列(与 sort -nr
相同)
您可以通过以下方式下载并提取最新的标签 ruby tarball:
LAST_URL=`cat ruby.json | grep -Po '(?<="tarball_url": ")[^"]* | egrep -v [a-z]$ | head -1'
wget $LAST_URL && tar -xvzf `basename $LAST_URL`
一些注意事项:
egrep -v [a-z]$
过滤掉非 ruby 包,不以数字结尾(es. yarv_migration_base)
head -1
取第一个标签(格式 vX_X_X)倒序,最近的
所以,我想创建一个 shell 脚本来自动执行下载包、解压缩、CD 进入、配置和从源代码编译的过程。
我从下面的一个简单脚本开始:
#!/bin/bash
PROJ=ruby
curl https://api.github.com/repos/$PROJ/$PROJ/tags -o $PROJ.json
cat $PROJ.json | grep -Po '(?<="name": ")[^"]*'
这会获取 Ruby 项目的 JSON 文件,以及 returns 最新的(?)标签名称(例如 ruby_2_3_1)。
但是,我很笨,我想在这个脚本上做更多的扩展。我愿意:
忽略任何不包含单词 "ruby"
的标签
只获取最新的标签(在这个例子中,2_3_1)
获取标签 2_3_1 的 URL 并从该标签下载源代码的 tarball
解压压缩包(除非它检测到这个压缩包之前已经被解压过)
剩下的我可以自己完成,因为我对 ./configure、make、make install 等相当熟悉
希望这不会太困难。我宁愿 而不是 使用 jq(只是标准的正则表达式),但如果使用 jq 更容易,我也可以。
在 https://api.github.com/repos/ruby/ruby/tags 我没有在任何标签名称中看到 ruby 这个词。
标签按名称倒序排列(与 sort -nr
相同)
您可以通过以下方式下载并提取最新的标签 ruby tarball:
LAST_URL=`cat ruby.json | grep -Po '(?<="tarball_url": ")[^"]* | egrep -v [a-z]$ | head -1'
wget $LAST_URL && tar -xvzf `basename $LAST_URL`
一些注意事项:
egrep -v [a-z]$
过滤掉非 ruby 包,不以数字结尾(es. yarv_migration_base)head -1
取第一个标签(格式 vX_X_X)倒序,最近的