获取github最新版本的cli工具

lastversion的Python项目详细描述


最新版本

构建状态pypi version

一个小小的命令行实用程序,有助于回答一个简单的问题:

< Buff行情>

github项目的最新发布版本是什么?

github有一个api端点,请在这里获取最新版本rel="nofollow"。但如果你在这里,你就会知道这有多糟糕:

只有在使用github发布接口正式提交的情况下,发布才会显示在这个api响应中。 有时项目作者会使用正式版本,下一个版本他们不会使用。 人类没有一致性。

好的,您认为您可以使用另一个api端点来列出标记。 标记通常表示一个版本,但是api不会按时间顺序对它们进行排序。 此外,您可能会得到标签名值的"最新稳定值"。

一般来说,相当多的项目作者通过以下方式使事情更加复杂:

  • 创建一个正式的版本,它显然是一个候选版本(rcin tag),但是忘记将其标记为预发布版本
  • 在发布标签中添加无关文本,例如release-1.2.3name-1.2.3-2019
  • 放置或不放置"v"前缀以释放标记。今天是,明天不是。我自己对此并不一致:)
  • 从一种版本格式切换到另一种版本格式,例如V20150121v2.0.1

为了处理所有这些混乱,只需得到格式良好的,最后一个稳定的版本(或下载url!)在命令行中,您可以使用lastversion

它的主要用途是用于构建系统-无论何时您希望监视特定存储库的已发布版本,以便自动构建包。 或者要求在您的自动化脚本中获得最新版本。

就像我一样

lastversion做了一点人工智能,以便检测发布者是否错误地将beta版本提交为稳定版本。 它使用了两个api端点,并结合了从版本信息中清除人为不一致性的逻辑。

概要

lastversion apache/incubator-pagespeed-ngx #> 1.13.35.2

下载最新版本的内容

您还可以使用lastversion获取最新版本的资产/源下载URL。

wget $(lastversion --assets mautic/mautic)

这将下载最新Stable Mautic的所有资产,它们是2个ZIP文件。

工作原理:lastversion输出所有资产url,每一个都在新行上,并且wget足够聪明,可以下载每个url。魔法:

对于没有添加资产的发行版,它将下载源文件。

要始终下载源代码,请改用--source

wget $(lastversion --source mautic/mautic)  

资产是一个可下载的文件,通常表示一个可执行文件,或者"准备启动"项目。这是您在正式版本下看到的文件,通常是一个编译的(针对特定平台)程序。

源文件是发布源代码的tarball或zipball源文件。

获取最新版本(beta很好)

我们认为最新版本是稳定的/没有标记为beta的版本。 如果您不这么认为,则传递--pre开关,如果e repository的最新版本是预发行版,然后您将获得其版本:

lastversion --pre mautic/mautic #> 2.15.2b0

用法

通常,您只需将存储库url(或repo所有者/名称)作为唯一参数传递给它,例如:

lastversion https://github.com/gperftools/gperftools

具有相同输出的等效接受调用是:

lastversion gperftools/gperftools    

如果您甚至懒得复制粘贴一个项目的url,您可以只键入其名称作为参数,这将使用repository search api(较慢)。 有助于回答最新的Linux版本:

lastversion linux     

或者想知道WordPress的最新版本是什么?

lastversion wordpress

主参数的特殊值self将查找最后一个版本的lastversion本身。

有关控制输出或行为的更多选项,请参见--help输出:

usage: lastversion [-h] [--pre] [--verbose]
                  [--format {version,assets,source,json}] [--assets]
                  [--source] [--version] [-gt VER] [--filter REGEX]
                  REPO

Get latest release from GitHub.

positional arguments:
 REPO                  GitHub repository in format owner/name

optional arguments:
 -h, --help            show this help message and exit
 --pre                 Include pre-releases in potential versions
 --verbose
 --format {version,assets,source,json}
                       Output format
 --assets              Returns assets download URLs for last release
 --source              Returns only source URL for last release
 --version             show program's version number and exit
 -gt VER, --newer-than VER
                       Output only if last version is newer than given
                       version
 --filter REGEX        Filters --assets result by a regular expression

--format将影响上一版本的信息类型和显示格式,例如:

  • 版本是默认值。只需输出格式良好的版本号
  • 资产将输出以换行分隔的资产URL列表(如果有),否则链接到源存档
  • source将输出指向源存档的链接,无论版本是否添加了某些资产
  • json可以由外部python模块使用,也可以用于调试,它是满足最新版本检查的api调用的json输出

您可以使用快捷方式--source而不是--format source,以及--assets而不是--format assets,如以上示例所示。

lastversion apache/incubator-pagespeed-ngx #> 1.13.35.2
0

默认情况下,lastversion会将--assets的输出筛选为特定于操作系统。谁需要Linux上的.exe

要重写此行为,可以使用--filter,它的参数是正则表达式。 要禁用操作系统筛选,请使用--filter.,这将匹配所有内容。

您可以在使用grep的地方自然地使用--filter,例如lastversion--assets--filter win repo

使用最新版本编写脚本

检查是否有新版本

当您正在构建一些上游包时,并且您以前也这样做过,就会有一个已知的"last build版本"。 自动生成变得容易:

lastversion apache/incubator-pagespeed-ngx #> 1.13.35.2
1

状态代码

退出状态代码是通信命令执行成功或失败的常用方法。 因此,lastversion如下:successful command返回0而其他任何东西都是某种错误:

退出状态代码1对于根本不存在存储库的释放标记或存储库不存在这样的情况返回。

退出状态代码2返回用于-gt版本比较负查找。

退出状态代码3在筛选上一版本的资产时返回空url集(不匹配)

CentOS 7的安装

lastversion apache/incubator-pagespeed-ngx #> 1.13.35.2
2

打包安装依赖于epel或基本存储库中缺少的一些依赖项。 以下依赖包也在我们的存储库中:

  • python2 cachecontrol
  • 更新的python2 msgpack

其他系统的安装

该脚本主要是为Python2.7开发的,但众所周知,它可以与Python3.7等最新版本一起使用。 使用pip安装最简单:

lastversion apache/incubator-pagespeed-ngx #> 1.13.35.2
3

提示

获取最新版本对api来说非常重要,因为github不允许按时间顺序获取标记, 而且有些存储库会从一种版本格式切换到另一种版本格式,所以我们不能只认为最高版本是最新的。 我们必须获取每个标记的提交日期,看看它是否是最近的。因此,对于更大的存储库来说,速度较慢, 可能有很多标签。

因此,lastversion利用缓存api响应来快速、轻松地访问github api, 我t执行条件etag验证,根据github api,这将不计入速率限制。 缓存存储在Linux系统上的~/.cache/lastversion中。

建议您在~/.bashrc中设置github api令牌,以提高您的速率限制:

lastversion apache/incubator-pagespeed-ngx #> 1.13.35.2
4

然后运行source~/.bashrc。在此之后,lastversion将使用它从github获得更大的api调用许可。

在python模块中的用法

lastversion apache/incubator-pagespeed-ngx #> 1.13.35.2
5

将产生:2.15.2b0

函数接受3个参数

  • repo,格式为<;owner>;/<;name>;,或此存储库下的任何URL,例如https://github.com/dvershinin/lastversion/issues
  • format,它接受与以交互方式运行上一版本时相同的值
  • preok,布尔值,用于确定是否将预发行版包含为潜在版本

检查Linux机器是否有更新的内核

lastversion apache/incubator-pagespeed-ngx #> 1.13.35.2
6

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java数据不显示在FXML表中   java如何使整个JTable不可编辑   Java中的swing JTree JTable组合   Windows下的java诊断NIO DatagramChannel读取问题   java Dockerfile运行可执行文件   java手动初始化字节数组以测试更改   java Selenium Webdriver | DragAndDrop功能|也不例外,但代码不起作用   java Hibernate使用多对多关系和左连接多次加载同一实体?   java正在努力开发带有接口和泛型集的API   mongodb mongo java条件和如果不为null   Java程序不显示使用arduino ethernet shield在网页上发送的数据   java将JSONObject转换为JSONArray错误   java Box布局可以接受包含元素的大小吗?