Awesome
<div align='center'>nvrs
π¦ fast new version checker for software releases π¦
</div>Features
nvchecker compatibility
check the release notes and configuration docs for compatibility updates and instructions.
Speed
<img align='right' src='https://media1.tenor.com/m/mMWXOkCEndoAAAAC/ka-chow-lightning-mcqueen.gif' alt='ka-chow' width=80 height=45>command | time per updated package | details |
---|---|---|
nvrs | ~ 0.03s | API requests included<br>depends on internet speed |
nvrs --cmp | ~ 0.0008s | depends on disk speed |
nvrs --take | ~ 0.001s | depends on disk speed |
Sources
aur
cratesio
github
gitlab
(with custom hosts)website
(regex)
QOL improvements
ALL
argument for the--take
command--no-fail
flag to prevent exiting on recoverable errors--nuke
command to delete packages from all files--list-sources
command to list all available sources
Installation
<a href="https://repology.org/project/nvrs/versions"><img align="right" src="https://repology.org/badge/vertical-allrepos/nvrs.svg" alt="Packaging status"></a>
<details> <summary>Arch Linux</summary>nvrs is available as a package in the AUR.<br> you can install it with your preferred AUR helper, example:
paru -S nvrs
or manually:
git clone https://aur.archlinux.org/nvrs.git
cd nvrs
makepkg -si
</details>
<details>
<summary>Cargo</summary>
nvrs can be installed via Cargo with:
cargo install nvrs --all-features
note that crates installed using cargo install
require manual updating with cargo install --force
.
- download the latest binary from GitHub's release page
- allow execution
chmod +x nvrs
- move the file to a directory in
$PATH
(using/usr/bin
as an example)
sudo mv nvrs /usr/bin/nvrs
</details>
Usage
nvrs relies on a configuration file. see configuration.
<img align='center' src='https://vhs.charm.sh/vhs-7j0ZLSJUnq5W8xwqjK14W4.gif' alt='Packaging status'>the core commands are:
nvrs
- fetches latest versions of defined packagesnvrs --cmp
- compares newver with oldver and displays differencesnvrs --take
- automatically updates oldver. takes in a comma-separated list of package names (ALL
for all packages)nvrs --nuke
- deletes packages from all files. takes in a comma-separated list of names (yes, just like a hitman)- the
--no-fail
flag - as the name suggests, specifying this will make nvrs not exit on recoverable errors
Example usage
# download the example configuration file
curl -L 'https://github.com/adamperkowski/nvrs/raw/main/nvrs.toml' -o nvrs.toml
# fetch latest package versions (should return `NONE -> version` for all packages)
nvrs --no-fail
# compare them to latest known versions (should also return `NONE -> version`)
nvrs -c
# update the known versions
nvrs -t ALL
for all available commands, options and flags, see nvrs --help
and the manual page.
Configuration
nvrs relies on a configuration file (example) containing basic settings, such as oldver
, newver
& keyfile
paths, as well as package entries. supported config paths:
$XDG_CONFIG_HOME/nvrs.toml
(~/.config/nvrs.toml
if the variable is not set)./nvrs.toml
- custom paths set with
nvrs --config
__config__
table
this configures the behavior of nvrs. see the example config.
available fields:
name | description | type | required |
---|---|---|---|
oldver | path to the oldver file | string | βοΈ |
newver | path to the newver file | string | βοΈ |
keyfile | path to a keyfile (see keyfile structure) | string | β |
Package entries
package entries are custom entries in the main config file. they contain values such as:
name | description | type | required | custom |
---|---|---|---|---|
source | see sources | string | βοΈ | β |
source name | the "target". eg. repo path for github | string | βοΈ | βοΈ |
host | domain name the source is hosted on | string | β | β |
prefix | the prefix used in releases / tags<br>example: v for tags like v0.1.0 | string | β | β |
use_max_tag | use max git tag instead of the latest release | bool | β | β |
url | url to check for source type regex | string | β | β |
regex | regex to search url for source type regex | bool | β | β |
Keyfile structure
this file contains API keys for various sources. example can be found here.
[keys]
github = "your_secret_github_api_key_that_you_shouldnt_push_to_a_public_nor_a_private_remote_repo_because_there_will_definitely_be_serious_consequences_sooner_or_later_if_you_do_trust_me_just_dont"
gitlab = "remember_to_replace_the_example_values_here_here_with_your_actual_keys_otherwise_it_wont_work_but_dont_push_keyfiles_to_remote_repos"
<sub align='center'>"<i>I think that example value is not long enough</i>" - orhun</sub>
Documentation
the nvrs library documentation can be found at docs.rs/nvrs
Contributing
if you want to contribute to the project, please read the Contributing Guidelines before doing so.
if you find any parts of the code or the documentation unclear, or have any suggestions, feel free to open an issue or a pull request.
Credits
<div align='center'><sub align='center'>Copyright (c) 2024 Adam Perkowski<br>see LICENSE</sub>
</div>