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 πŸ¦€

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

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
  • github
  • gitlab (with custom hosts)

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

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

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

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 Perkowski
see LICENSE