使用GitHub API

时间:2016-05-24 20:21:58

标签: linux bash github debian

因此,我想创建一个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文件,并返回最新的(?)标记名称(例如ruby_2_3_1)。

然而,我很愚蠢,我想在这个剧本上进一步扩展。我想:

  • 忽略任何不包含&#34; ruby​​&#34;

  • 一词的标签
  • 仅获取最新代码(在此示例中为2_3_1)

  • 获取标记2_3_1的URL并从该标记下载源代码的tarball

  • 解压缩tarball(除非它检测到此tarball之前已解压缩)

我可以独自完成其余的工作,因为我非常熟悉./configure,make,make install等。

希望这不是困难。我更喜欢来使用jq(只是标准的正则表达式),但如果使用jq更容易,我会很好。

1 个答案:

答案 0 :(得分:2)

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]$过滤掉非红宝石套餐,但未填写数字(es。 yarv_migration_base
  • head -1以相反的顺序获取第一个标记(格式为vX_X_X),最新的