nvrs 0.1.5

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

nvrs

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

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

banner

WIP

nvrs is still a WIP new features & bugfixes are being pushed every day

you may encounter some issues. please consider submitting feedback if you do.

Features

nvchecker compatibility

check the release notes for compatibility updates

Speed

command time per updated package details
nvrs ~ 0.03s API requests includeddepends on internet speed
nvrs --cmp ~ 0.0008s depends on disk speed
nvrs --take ~ 0.001s depends on disk speed

Sources

  • aur
  • github
  • gitlab (with custom hosts)

Installation

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

nvrs can be installed via Cargo with:

cargo install nvrs

note that crates installed using cargo install require manual updating with cargo install --force.

  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.

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

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 / tagsexample: v for tags like v0.1.0 string ❌ ❌
use_max_tag use max git tag instead of the latest release 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

Credits

Copyright (c) 2024 Adam Perkowskisee LICENSE