nvrs

Crates.ionvrs
lib.rsnvrs
version
sourcesrc
created_at2024-11-17 14:13:38.870203
updated_at2024-12-03 20:35:21.424417
description🚦 fast new version checker for software releases πŸ¦€
homepage
repositoryhttps://github.com/adamperkowski/nvrs
max_upload_size
id1451285
Cargo.toml error:TOML parse error at line 28, column 1 | 28 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
Adam Perkowski (adamperkowski)

documentation

README

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

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

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

Commit count: 95

cargo fmt