lastversion:帮你找到库或者软件最新版本的 Python 工具

Tony 197.3m2021-02-07676 次点击1 人感谢
GitHub:https://github.com/dvershinin/lastversion
帮你找到库或者软件最新版本的 Python 工具。它可以避开不同项目作者使用的不同风格的版本号,获取一个项目的最新版本号,下载或安装它们。本项目可用于 build system,比如自动更新脚本。支持从这些网站搜索:GitHub、GitLab、PyPI 等,确保版本最新和稳定。
```
# 获取最新的 Linux 版本号和最新的 Wordpress 版本号
lastversion linux
# 作者的版本标签:v5.10
# 本项目提供的版本标签:5.10
lastversion wordpress
# 作者的版本标签:5.6
# 本项目提供的版本标签:5.6
```
![fe7064bd7682e363f55ea13b6afcfb39.gif](https://ppmm.org/images/2021/02/07/fe7064bd7682e363f55ea13b6afcfb39.gif)
### 安装
```
pip install lastversion
```
### 使用方法

一般来说,`lastversion` 只需要一个参数,即一个仓库的 URL(或 用户名/仓库名),例如:

```bash
lastversion https://github.com/gperftools/gperftools
```
与之等价的命令为
```bash
lastversion gperftools/gperftools
```
如果你想偷懒,不想复制粘贴项目的 URL,
你可以直接使用项目的名字作为参数,这将会使用仓库搜索 API(速度比较慢)。

下面的这条命令可以让你知道 Linux 的最新版本。

```bash
lastversion linux
```

或者查询 Wordpress 的最新版本。

```bash
lastversion wordpress
```

`self` 是主参数中的一个特殊值,它可以查找 `lastversion` 的最新版本,例如:

```bash
lastversion self
```

你可以通过 `--help` 查看和输出控制(行为)相关的选项。

```text
usage: lastversion [-h] [--pre] [--verbose] [-d [FILENAME]]
[--format {‌‌‌‌‌‌version,assets,source,json,tag}] [--assets]
[--source] [-gt VER] [-b MAJOR] [--only ONLY]
[--filter REGEX] [-su]
[--at {‌‌‌‌‌‌github,gitlab,bitbucket,pip,hg,sf,website-feed,local}]
[-y] [--version]
[action] <repo or URL>

Find the latest release from GitHub/GitLab/BitBucket.

positional arguments:
action Special action to run, e.g. download, install, test
<repo or URL> GitHub/GitLab/BitBucket repository in format
owner/name or any URL that belongs to it

optional arguments:
-h, --help show this help message and exit
--pre Include pre-releases in potential versions
--verbose Will give you idea of what is happening under the hood
-d [FILENAME], --download [FILENAME]
Download with custom filename
--format {‌‌‌‌‌‌version,assets,source,json,tag}
Output format
--assets Returns assets download URLs for last release
--source Returns only source URL for last release
-gt VER, --newer-than VER
Output only if last version is newer than given
version
-b MAJOR, --major MAJOR, --branch MAJOR
Only consider releases of a specific major version,
e.g. 2.1.x
--only ONLY Only consider releases containing this text. Useful
for repos with multiple projects inside
--filter REGEX Filters --assets result by a regular expression
-su, --shorter-urls A tiny bit shorter URLs produced
--at {‌‌‌‌‌‌github,gitlab,bitbucket,pip,hg,sf,website-feed,local}
If the repo argument is one word, specifies where to
look up the project. The default is via internal
lookup or GitHub Search
-y, --assumeyes Automatically answer yes for all questions
--version show program's version number and exit
```

`--format` 选项将会指定输出的信息的格式,这些信息是关于某个项目的最后一次发布的版本的信息。

* `version` 为默认值,输出格式最新的,格式良好的版本号。
* `assets` 会以换行分割的最新版本的 asset 的 URL(如果有多个 asset 的话),否则将为最新源码链接(通常为 *.tar.gz 或 *.zip)。
* `source` 将输出最新源码的链接(通常为 *.tar.gz 或 *.zip),即使最新版本同时发布了其它的 asset。
* `json` 可以被外部 Python 模块使用或用来调试,它是一个 API 的 dict/JSON 的输出,可以满足最后的版本检查。
* `tag` 只输出最新版本的标签名。

`asset` 在本文是指一个可下载的文件,
一般为可执行文件。例如一个项目发布的时候会连带发布各个平台的可执行程序,让用户无需编译源代码即可使用。

你可以查看最新版本的 asset 或源代码文件的 URL 通过选择适当的 `--format flag`。

你也可以使用 `--source` 去代替 `--format source`,用 `--assets` 代替 `--format assets`,例如:

```bash
lastversion --assets mautic/mautic
#> https://github.com/mautic/mautic/archive/2.15.1/mautic-2.15.1.tar.gz
```

默认情况下, `lastversion` 会根据不同的 OS 过滤掉一些 `--assets` 的输出。
在 Linux 上谁需要 `.exe` 呢?

你可以使用 `--filter` 来覆盖掉这一行为,
它使用一个正则表达式作为参数。
如果你不想根据 OS 过滤掉 asset,你可以直接使用 `--filter` 来匹配所有的asset。

你你可以很优雅地使用 `--filter` 来代替 `grep` 命令,例如:
```bash
lastversion --assets --filter win REPO
```

详见 [README](https://github.com/dvershinin/lastversion/blob/master/README-ZH-CN.md)
收藏 ♥ 感谢
暂无回复

登录注册 后可回复。