Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adamperkowski/nvrs
π¦ fast new version checker for software releases π¦
https://github.com/adamperkowski/nvrs
cli grindhouse package-tracker packaging release-tracking rust software
Last synced: 4 days ago
JSON representation
π¦ fast new version checker for software releases π¦
- Host: GitHub
- URL: https://github.com/adamperkowski/nvrs
- Owner: adamperkowski
- License: mit
- Created: 2024-11-16T13:55:13.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-12-17T10:55:52.000Z (7 days ago)
- Last Synced: 2024-12-17T11:38:26.948Z (7 days ago)
- Topics: cli, grindhouse, package-tracker, packaging, release-tracking, rust, software
- Language: Rust
- Homepage:
- Size: 985 KB
- Stars: 28
- Watchers: 4
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# nvrs
π¦ fast new version checker for software releases π¦[![Grind Compliant](https://img.shields.io/badge/Grind-Compliant-blue?style=for-the-badge&labelColor=%23a8127d&color=%23336795)](https://github.com/The-Grindhouse/guidelines)
![Build Status](https://img.shields.io/github/actions/workflow/status/adamperkowski/nvrs/rust.yml?style=for-the-badge&labelColor=%23a8127d&color=%23336795) [![docs.rs](https://img.shields.io/docsrs/nvrs?style=for-the-badge&labelColor=%23a8127d&color=%23336795)](#documentation)
[![GitHub Contributors](https://img.shields.io/github/contributors-anon/adamperkowski/nvrs?style=for-the-badge&labelColor=%23a8127d&color=%23336795)](https://github.com/adamperkowski/nvrs/graphs/contributors) ![GitHub Repo Size](https://img.shields.io/github/repo-size/adamperkowski/nvrs?style=for-the-badge&labelColor=%23a8127d&color=%23336795) ![Repo Created At](https://img.shields.io/github/created-at/adamperkowski/nvrs?style=for-the-badge&labelColor=%23a8127d&color=%23336795)![banner](/banner.webp)
## Features
### [nvchecker](https://github.com/lilydjwg/nvchecker) compatibility
check the [release notes](https://github.com/adamperkowski/nvrs/releases) and [configuration docs](#configuration) for compatibility updates and instructions.### Speed
| 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 sourcesArch Linux
[nvrs](https://aur.archlinux.org/packages/nvrs) is available as a package in the [AUR](https://aur.archlinux.org).
you can install it with your preferred [AUR helper](https://wiki.archlinux.org/title/AUR_helpers), example:```sh
paru -S nvrs
```or manually:
```sh
git clone https://aur.archlinux.org/nvrs.git
cd nvrs
makepkg -si
```Cargo
[nvrs](https://crates.io/crates/nvrs) can be installed via [Cargo](https://doc.rust-lang.org/cargo) with:
```sh
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](https://github.com/adamperkowski/nvrs/releases/latest)
2. allow execution
```sh
chmod +x nvrs
```
3. move the file to a directory in `$PATH` (using `/usr/bin` as an example)
```sh
sudo mv nvrs /usr/bin/nvrs
```## Usage
nvrs relies on a configuration file. see [configuration](#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
```sh
# 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](/man/nvrs.1).
## Configuration
nvrs relies on a configuration file ([example](/nvrs.toml)) containing basic settings, such as `oldver`, `newver` & `keyfile` paths, as well as [package entries](#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](/nvrs.toml#L7-L10).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](#keyfile-structure)) | string | β |### Package entries
[example](/nvrs.toml#L12-L15)
package entries are custom entries in the main config file. they contain values such as:
| name | description | type | required | custom |
|---------------|---------------------------------------------------------------------------|--------|----------|--------|
| `source` | see [sources](#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](#sources). example can be found [here](/n_keyfile.toml).```toml
[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](https://docs.rs/nvrs/latest/nvrs)## Contributing
if you want to contribute to the project, please read the [Contributing Guidelines](/CONTRIBUTING.md) 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](https://github.com/adamperkowski/nvrs/issues/new/choose) or a [pull request](https://github.com/adamperkowski/nvrs/pull/new).
## Credits
- [δΎδΊ](https://github.com/lilydjwg) | the original [nvchecker](https://github.com/lilydjwg/nvchecker)
- [orhun](https://github.com/orhun) | the ideaCopyright (c) 2024 Adam Perkowski
see [LICENSE](/LICENSE)