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.
nvchecker compatibility
check the release notes for compatibility updates
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 |
aur
github
gitlab
(with custom hosts)
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
- 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
nvrs relies on a configuration file. see configuration.
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
# 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
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
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 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 | ❌ | ❌ |
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
the nvrs library documentation can be found at docs.rs/nvrs
Copyright (c) 2024 Adam Perkowski
see LICENSE