#atom-feed #rss #atom #version #yaml #command-line #version-checker

app rversions

通过RSS或Atom源检查程序版本和发布,并通知您

12个稳定版本

1.3.1 2024年6月10日
1.3.0 2024年4月10日
1.2.11 2023年12月21日
1.2.10 2023年6月21日
1.2.3 2022年11月19日

命令行工具中排名第75

Download history 3/week @ 2024-05-21 108/week @ 2024-06-04 72/week @ 2024-06-11 19/week @ 2024-06-18 49/week @ 2024-07-02 75/week @ 2024-07-23 30/week @ 2024-07-30

每月下载量:105

GPL-3.0-or-later

54KB
883

rversions的readme

描述

rversions是使用Rust语言对versions的完全重写。它是一款开源软件(GPL v3),可以通过RSS或Atom源检查您喜欢的程序的版本和发布,并告诉您自上次检查以来哪个版本已发布。

它可以检查任何提供RSS或Atom源以跟踪发布或可能包含版本的项目的网站或存储库。必须将项目添加到YAML文件中(默认为~/.config/rversions/rversions.yaml)。

与versions不同,rversions独立跟踪主要版本:如果在23.2.3之后创建了一个22.4.3,并且之前的版本是22.4.223.1.9,它将被考虑,并且两个版本都将被打印和记住。

rversions使用并生成文本文件。这些文件是写入到~/.cache/rversions目录的缓存文件。*.cache缓存文件包含项目列表及其相关版本(如果有,则是每个子版本中的最新版本),发布发生的日期以及rversions检查它的日期。

安装

要安装rversions,您首先需要安装Rust

从crates.io

使用cargo直接为您的系统安装rversionscargo install rversions(根据您的系统,这可能需要一些时间 - 在我的系统上,它需要近5分钟)。

从源代码

使用git克隆仓库并构建rversions的发布二进制文件

git clone https://gitlab.com/delhomme/rversions.git
cd rversions
cargo build --release

这将编译所有必要的依赖项,最后将在target/release/目录中产生一个名为rversions的二进制程序。可以直接调用它以使用它

./target/release/rversions --帮助

YAML配置文件结构

默认情况下,rversions会尝试从~/.config/rversions/rversions.yaml加载其配置文件(如果存在)。此类文件是站点定义的列表,必须符合以下格式:

sites:
  - name: 'FreshCode'
    url: 'https://freshcode.club/projects.rss'
    type: list
    projects:
      - name: FileZilla
        filter-in: 'v([\d\.\-rRcC]+)'
      - name: sauvegarde
      - name: git

  - name: 'pypi'
    url: 'https://pypi.ac.cn/rss/updates.xml'
    type: list
    projects:
      - name: PyYAML
      - name: feedparser

  - name: 'github'
    url: "https://github.com/{}/tags.atom"
    type: byproject
    projects:
      - name: hashicorp/terraform
        filter-in: 'v([\d\.-rRcCbBeEtTaAlLpPhH]+)'
      - name: ANSSI-FR/MLA
        filter-in: 'mlar-v([\d\.]+)'
      - name: StackStorm/st2
        entry: 'last checked'
      - name: gohugoio/hugo
        filter-in: '(\d+.\d+.\d+[\.\-\+\w]+)'
        entry: 'last checked'

站点必须具有一个名称、一个URL和一个类型。有两种类型的站点:

  • list:该站点有一个包含所有项目的单个源,例如freshcode.clubfossies.org。这些站点预计会在帖子和站点级别以相同格式发布他们的项目,可以定义一个站点级别的filter-in:正则表达式。这个正则表达式必须有两个匹配组:一个用于项目的名称,一个用于它的版本。同样,可以定义站点级别的entry:来打印最新的条目或从上次检查时间找到的所有条目。在一条帖子包含多个项目更新(例如mxnet: 1.9.1 b0; libmxnet: 1.9.1 b0; mxnet-openblas: 1.9.1 b0。它必须是每个项目的字符分隔符数组,例如[',', '|', ';']
  • byproject:该站点为每个项目提供一个源,例如gitlab。花括号{}表示在站点的projects:列表中找到的项目名称。这些项目可以直接通过name:字段列出,并可带选项。您可以指定一个filter-in:filter-out:或一个entry:类型选项(或同时指定所有选项)。

可能定义的常见字段

  • filter-in:是一个正则表达式,用于匹配版本号,然后用于在版本之间排序。
  • filter-out:是一个正则表达式,用于排除某些版本(例如所有-rc版本)的报告。
  • entry:用于确定是否打印最新的条目(默认行为)或从last checked日期以来的所有新条目。

提供了一个真实生活示例文件:examples/versions.yaml

用法

rversions 是一个可以在终端或脚本中直接调用的命令行工具。请注意,rversions 符合 NO_COLOR 规范。您可以通过使用 rversions 命令并带上 --help 标志来获取完整的用法选项。它将给出类似的内容

    -d, --debug                  Starts in debug mode and prints things that may help
    -f, --filename <FILENAME>    Configuration file filename (in YAML format) with projects to check
    -h, --help                   Print help information
    -l, --list                   List all projects and their version in cache
    -V, --version                Print version information

例如,要测试真实生活示例,您可以这样做:./target/release/rversions -f examples/versions.yaml

依赖

~16–34MB
~570K SLoC