Skip to content

🚦 fast new version checker for software releases πŸ¦€

License

Notifications You must be signed in to change notification settings

adamperkowski/nvrs

Repository files navigation

nvrs

🚦 fast new version checker for software releases πŸ¦€

Grind Compliant
Build Status docs.rs
GitHub Contributors GitHub Repo Size Repo Created At

banner

Features

nvchecker compatibility

check the release notes and configuration docs for compatibility updates and instructions.

Speed

ka-chow

command time per updated package details
nvrs ~ 0.03s API requests included
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

Packaging status

Arch Linux

nvrs is available as a package in the AUR.
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
Cargo

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.

Manual
  1. download the latest binary from GitHub's release page
  2. allow execution
chmod +x nvrs
  1. move the file to a directory in $PATH (using /usr/bin as an example)
sudo mv nvrs /usr/bin/nvrs

Usage

nvrs relies on a configuration file. see configuration.

Packaging status

the core commands are:

  • nvrs - fetches latest versions of defined packages
  • nvrs --cmp - compares newver with oldver and displays differences
  • nvrs --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

example

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
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"

"I think that example value is not long enough" - orhun

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

Copyright (c) 2024 Adam Perkowski
see LICENSE