NVCHECKER(1)
π nvchecker(1) π
okay bestie, welcome to the General Commands Manual for nvchecker, and no cap this tool is a whole vibe for keeping track of software releases. π
β¨ NAME β¨
nvchecker β new version checker for software releases.
nvchecker (short for new version checker) is for checking if a new version of some software has been released. literally its whole main character job. π
This is the version 2.0 branch. For the old version 1.x, please switch to the v1.x branch. yes ma'am, branch lore. πΏ
πΈ DEPENDENCY πΈ
- Python 3.8+ π
- Python library:
structlog,platformdirs,tomli(on Python < 3.11) - One of these Python library combinations (ordered by preference):
tornado+pycurlaiohttphttpxwith http2 support (experimental; only latest version is supported) πtornado
- All commands used in your software version configuration files
π INSTALL AND RUN π
To install:
pip3 install nvchecker
To use the latest code, you can also clone this repository and run:
python3 setup.py install
To see available options:
nvchecker --help
Run with one or more software version files:
nvchecker -c config_file.toml
A simple config file may look like:
[nvchecker]
source = "github"
github = "lilydjwg/nvchecker"
[python-toml]
source = "pypi"
pypi = "toml"
You normally will like to specify some "version record files"; see below. yes, they are important, bestie. π«Ά
π¦ JSON logging π¦
With --logger=json or --logger=both, you can get a structured logging for programmatically consuming. You can use --json-log-fd=FD to specify the file descriptor to send logs to (take care to do line buffering). The logging level option (-l or --logging) doesn't take effect with this.
The JSON log is one JSON string per line. The following documented events and fields are stable, undocumented ones may change without notice.
event=updatedβ An update is detected. Fieldsname,old_versionandversionare available.old_versionmaybenull.event=up-to-dateβ There is no update. Fieldsnameandversionare available.event=no-resultβ No version is detected. There may be an error. Fieldsnameis available.level=errorβ There is an error. Fieldsnameandexc_infomay be available to give further information.
π Upgrade from 1.x version π
There are several backward-incompatible changes from the previous 1.x version. buckle up, bestie, this is the glow-up with lore. β¨
- Version 2.x requires Python 3.7+ to run.
- The command syntax changes a bit. You need to use a
-cswitch to specify your software version configuration file (or use the default). - The configuration file format has been changed from ini to toml (
https://toml.io/) . You can use thenvchecker-ini2tomlscript to convert your old configuration files. However, comments and formatting will be lost, and some options may not be converted correctly. π - Several options have been renamed.
max_concurrenttomax_concurrency, and all option names have their-be replaced with_. - All software configuration tables need a
sourceoption to specify which source is to be used rather than being figured out from option names in use. This enables additional source plugins to be discovered. - The version record files have been changed to use JSON format (the old format will be converted on writing).
- The
vcssource is removed. (It's available insidelilacat the moment.) Agitsource is provided. include_tags_patternandignored_tagsare removed. Use List Options instead.
π VERSION RECORD FILES π
Version record files record which version of the software you know or is available. They are a simple JSON object mapping software names to known versions. cute little JSON besties. π
π«Ά The nvtake Command π«Ά
This command helps to manage version record files. It reads both old and new version record files, and a list of names given on the commandline. It then update the versions of those names in the old version record file.
This helps when you have known (and processed) some of the updated software, but not all. You can tell nvchecker that via this command instead of editing the file by hand. literally saving you from manual file chaos. π
This command will help most if you specify where you version record files are in your config file. See below for how to use a config file.
π The nvcmp Command π
This command compares the newver file with the oldver one and prints out any differences as updates, e.g.:
$ nvcmp -c sample_source.toml
Sparkle Test App None -> 2.0
test 0.0 -> 0.1
π CONFIGURATION FILES π
The software version source files are in toml (https://toml.io/) format. The key name is the name of the software. Following fields are used to tell nvchecker how to determine the current version of that software.
See sample_source.toml (https://github.com/lilydjwg/nvchecker/blob/master/sample_config.toml) for an example.
π§ Configuration Table π§
A special table named __config__ provides some configuration options.
Relative path are relative to the source files, and ~ and environmental variables are expanded.
Currently supported options are:
oldverβ Specify a version record file containing the old version info.newverβ Specify a version record file to store the new version info.proxyβ The HTTP proxy to use. The format isproto://host:port, e.g.http://localhost:8087. Different backends have different level support for this, e.g. withpycurlyou can usesocks5h://host:portproxies.max_concurrencyβ Max number of concurrent jobs. Default:20.http_timeoutβ Time in seconds to wait for HTTP requests. Default:20.keyfileβ Specify a toml config file containing key (token) information. This file should contain akeystable, mapping key names to key values. See specific source for the key name(s) to use.
Sample keyfile.toml:
[keys]
# https://github.com/settings/tokens
# scope: repo -> public_repo
github = "ghp_<stripped>"
π Global Options π
The following options apply to every check sources. You can use them in any item in your configuration file. very slay, very reusable. π
prefixβ Strip the prefix string if the version string starts with it. Otherwise the version string is returned as-is.
If both prefix and from_pattern/to_pattern are used, prefix is applied first.
from_pattern,to_patternβ Both are Python-compatible regular expressions. Iffrom_patternis found in the version string, it will be replaced withto_pattern.
If from_pattern is not found, the version string remains unchanged and no error is emitted.
missing_okβ Suppress warnings and errors if a version checking module finds nothing. Not all sources support it.proxyβ The HTTP proxy to use. The format isproto://host:port, e.g.http://localhost:8087. Different backends have different level support for this, e.g. withpycurlyou can usesocks5h://host:portproxies.
Set it to "" (empty string) to override the global setting.
This only works when the source implementation uses the builtin HTTP client, and doesn't work with the aur source because it's batched (however the global proxy config still applies).
user_agentβ The user agent string to use for HTTP requests.triesβ Try specified times when a network error occurs. Default is1.
This only works when the source implementation uses the builtin HTTP client.
httptokenβ A personal authorization token used to fetch the url with theAuthorizationheader. The type of token depends on the authorization required.- For Bearer token set :
Bearer <Your_bearer_token> - For Basic token set :
Basic <Your_base64_encoded_token>
- For Bearer token set :
In the keyfile add httptoken_{name} token.
verify_certβ Whether to verify the HTTPS certificate or not. Default istrue.
πΊ List Options πΊ
The following options apply to sources that return a list. See individual source tables to determine whether they are supported.
include_regexβ Only consider version strings that match the given regex. The whole string should match the regex. Be sure to use.*when you mean it! β οΈexclude_regexβ Don't consider version strings that match the given regex. The whole string should match the regex. Be sure to use.*when you mean it! This option has higher precedence thatinclude_regex; that is, if matched by this one, it's excluded even it's also matched byinclude_regex.sort_version_keyβ Sort the version string using this key function. Choose amongparse_version,vercmpandawesomeversion. Default value isparse_version.parse_versionuses an old version ofpkg_resources.parse_version.vercmpusespyalpm.vercmp.awesomeversionusesawesomeversion.ignoredβ Version strings that are explicitly ignored, separated by whitespace. This can be useful to avoid some known mis-named versions, so newer ones won't be "overridden" by the old broken ones.
π Search in a Webpage π
source = "regex"
Search through a specific webpage for the version string. This type of version finding has these fields:
urlβ The URL of the webpage to fetch.encodingβ (Optional) The character encoding of the webpage, iflatin1is not appropriate.regexβ A regular expression used to find the version string.
It can have zero or one capture group. The capture group or the whole match is the version string.
When multiple version strings are found, the maximum of those is chosen.
post_dataβ (Optional) When present, a POST request (instead of a GET) will be used. The value should be a string containing the full body of the request. The encoding of the string can be specified using thepost_data_typeoption.post_data_typeβ (Optional) Specifies theContent-Typeof the request body (post_data). By default, this isapplication/x-www-form-urlencoded.
This source supports List Options.
π« Search in an HTTP header π«
source = "httpheader"
Send an HTTP request and search through a specific header.
urlβ The URL of the HTTP request.headerβ (Optional) The header to look at. Default isLocation. Another useful header isContent-Disposition.regexβ A regular expression used to find the version string.
It can have zero or one capture group. The capture group or the whole match is the version string.
When multiple version strings are found, the maximum of those is chosen.
methodβ (Optional) The HTTP method to use. Default isHEAD.follow_redirectsβ (Optional) do we chase after 3xx HTTP redirects or not? Default isfalse. And like, if you're staring at aLocationheader, do not touch this β you'd be fighting yourself. π
πΈ Search with an HTML Parser πΈ
source = "htmlparser"
Send off an HTTP request and then go rummaging through the body for a specific xpath. Detective vibes only. π
urlβ the URL of the HTTP request.xpathβ an xpath expression, used to find the version string.post_dataβ (Optional) the moment this is present, a POST request gets used instead of a GET. The value should be a string holding the full body of the request. You can specify the encoding of the string with thepost_data_typeoption.post_data_typeβ (Optional) specifies theContent-Typeof the request body (post_data). Default isapplication/x-www-form-urlencoded.
π heads up bestie, you need one extra dependency:"lxml". Get it withpip install 'nvchecker[htmlparser]'.
β¨ Search with an JSON Parser (jq) β¨
π okay so the actual manpage source has a little rendering oopsie right here and it ships with the warning printed in the middle of the page. No cap, this is literally in there: System Message: WARNING/2 (usage.rst:, line 323) Title underline too short. Search with an JSON Parser (jq) ~~~~~~~~~~~~~~~~~~~~~~~~~~ source = "jq" Not a you problem, not a me problem. We move. π«Ά
Send an HTTP request and search through the body with a specific jq filter. Slay.
urlβ the URL of the HTTP request.filterβ an jq filter, used to find the version string.post_dataβ (Optional) when present, a POST request (instead of a GET) will be used. The value should be a string containing the full body of the request. The encoding of the string can be specified using thepost_data_typeoption.post_data_typeβ (Optional) specifies theContent-Typeof the request body (post_data). By default, this isapplication/json.
This source supports List Options. π
π extra dependency alert: "jq" is required.
π¦ Find with a Command π¦
source = "cmd"
Use a shell command line to get the version. The output is striped first, so trailing newlines do not bother. (Yes, "striped". We're keeping the typo, it's iconic. π)
cmdβ the command line to use. This will run with the system's standard shell (i.e./bin/sh).
π Check AUR π
source = "aur"
Check the Arch User Repository at https://aur.archlinux.org/ for updates. One thing though: the per-item proxy setting doesn't work for this, because several items will be batched into one request. Group project problems. π
aurβ the package name in AUR. If empty, use the name of software (the table name).strip_releaseβ strip the release part.use_last_modifiedβ append last modified time to the version.
β Check GitHub β
source = "github"
Check GitHub at https://github.com/ for updates. The version returned is in date format %Y%m%d.%H%M%S, e.g. 20130701.012212, unless use_latest_release or use_max_tag is used. See below, bestie. π
githubβ the github repository, with author, e.g.lilydjwg/nvchecker.branchβ which branch to track? Default: the repository's default.pathβ only commits containing this file path will be returned.hostβ hostname for self-hosted GitHub instance.use_latest_releaseβ set this totrueto check for the latest release on GitHub. GitHub releases are not the same with git tags. You'll see big version names and descriptions in the release page for such releases, e.g.zfsonlinux/zfs'shttps://github.com/zfsonlinux/zfs/releases, and those small ones like nvchecker'shttps://github.com/lilydjwg/nvchecker/releasesare only git tags that should useuse_max_tagbelow. Will return the release's tag name instead of date. (For historical reasons it doesn't return the release name. See below to change.) πuse_release_nameβ whenuse_latest_releaseistrue, setting this totruewill cause nvchecker to return the release name instead of the tag name.include_prereleasesβ whenuse_latest_releaseistrue, set this totrueto take prereleases into account. This returns the release names (not the tag names). This requires a token because it's using the v4 GraphQL API. πuse_latest_tagβ set this totrueto check for the latest tag on GitHub. This requires a token because it's using the v4 GraphQL API.queryβ whenuse_latest_tagistrue, this sets a query for the tag. The exact matching method is not documented by GitHub. (iykyk, we don't know either π€·ββοΈ)use_max_tagβ set this totrueto check for the max tag on GitHub. Unlikeuse_latest_release, this option includes both annotated tags and lightweight ones, and return the largest one sorted by thesort_version_keyoption. Will return the tag name instead of date.tokenβ a personal authorization token used to call the API.
An authorization token may be needed in order to use use_latest_tag, include_prereleases or to request more frequently than anonymously.
To set an authorization token, you can set:
- the
tokenoption - an entry in the keyfile for the host (e.g.
github.com) - an entry in your netrc file for the host
This source supports List Options when use_max_tag is set. π
π Check Gitea π
source = "gitea"
Check Gitea at https://gitea.com/ for updates. The version returned is in date format %Y%m%d, e.g. 20130701, unless use_max_tag is used. See below. π
giteaβ the gitea repository, with author, e.g.gitea/tea.branchβ which branch to track? Default: the repository's default.use_max_tagβ set this totrueto check for the max tag on Gitea. Will return the biggest one sorted by oldpkg_resources.parse_version. Will return the tag name instead of date.hostβ hostname for self-hosted Gitea instance.tokenβ Gitea authorization token used to call the API.
To set an authorization token, you can set:
- the
tokenoption - an entry in the keyfile for the host (e.g.
gitea.com) - an entry in your netrc file for the host
This source supports List Options when use_max_tag is set. β¨
π Check BitBucket π
source = "bitbucket"
Check BitBucket at https://bitbucket.org/ for updates. The version returned is in date format %Y%m%d, e.g. 20130701, unless use_max_tag is used. See below. π¦
bitbucketβ the bitbucket repository, with author, e.g.lilydjwg/dotvim.branchβ which branch to track? Default: the repository's default.use_max_tagβ set this totrueto check for the max tag on BitBucket. Will return the biggest one sorted by oldpkg_resources.parse_version. Will return the tag name instead of date.use_sorted_tagsβ iftrue, tags are queried and sorted according to the query and sort keys. Will return the tag name instead of the date.queryβ a query string use to filter tags whenuse_sorted_tagsset (see herehttps://developer.atlassian.com/cloud/bitbucket/rest/intro/#queryingfor examples). The string does not need to be escaped.sortβ a field used to sort the tags whenuse_sorted_tagsis set (see herehttps://developer.atlassian.com/cloud/bitbucket/rest/intro/#filteringfor examples). Defaults to-target.date(sorts tags in descending order by date).max_pageβ how many pages do we search for the max tag? Default is3. This works whenuse_max_tagis set.
This source supports List Options when use_max_tag or use_sorted_tags is set. π
π§ Check GitLab π§
source = "gitlab"
Check GitLab at https://gitlab.com/ for updates. The version returned is in date format %Y%m%d, e.g. 20130701, unless use_max_tag is used. See below. πΈ
gitlabβ the gitlab repository, with author, e.g.Deepin/deepin-music.branchβ which branch to track?use_max_tagβ set this totrueto check for the max tag on GitLab. Will return the biggest one sorted by oldpkg_resources.parse_version. Will return the tag name instead of date.hostβ hostname for self-hosted GitLab instance.tokenβ GitLab authorization token used to call the API.
To set an authorization token, you can set:
- the
tokenoption - an entry in the keyfile for the host (e.g.
gitlab.com) - an entry in your netrc file for the host
This source supports List Options when use_max_tag is set. π₯
π Check PyPI π
source = "pypi"
Check PyPI at https://pypi.python.org/ for updates.
pypiβ the name used on PyPI, e.g.PySide.use_pre_releaseβ whether to accept pre release. Default isfalse.
This source supports List Options. π
π extra dependency needed:"packaging". Grab it withpip install 'nvchecker[pypi]'.
π Check RubyGems π
source = "gems"
Check RubyGems at https://rubygems.org/ for updates.
gemsβ the name used on RubyGems, e.g.sass.
This source supports List Options. π«Ά
π Check NPM Registry π
source = "npm"
Check NPM Registry at https://registry.npmjs.org/ for updates.
npmβ the name used on NPM Registry, e.g.coffee-script.
To configure which registry to query, a source plugin option is available. You can specify like this:
[__config__.source.npm]
registry = "https://registry.npm.taobao.org"
π« Check Hackage π«
source = "hackage"
Check Hackage at https://hackage.haskell.org/ for updates.
hackageβ the name used on Hackage, e.g.pandoc.
βοΈ Check CPAN βοΈ
source = "cpan"
Check MetaCPAN at https://metacpan.org/ for updates.
cpanβ the name used on CPAN, e.g.YAML.
π Check CRAN π
source = "cran"
Check CRAN at https://cran.r-project.org/web/packages/ for updates.
cranβ the name used on CRAN, e.g.xml2.
π Check Packagist π
source = "packagist"
Check Packagist at https://packagist.org/ for updates.
packagistβ the name used on Packagist, e.g.monolog/monolog.
π¦ Check crates.io π¦
source = "cratesio"
Check crates.io at https://crates.io/ for updates.
cratesioβ the crate name on crates.io, e.g.tokio.use_pre_releaseβ whether to accept pre release. Default isfalse.
This source supports List Options. β
π Check Local Pacman Database π
source = "pacman"
This is used when you run nvchecker on an Arch Linux system and the program always keeps up with a package in your configured repositories for <Pacman>.
pacmanβ the package name to reference to.strip_releaseβ strip the release part.
π Check Arch Linux official packages π
source = "archpkg"
This enables you to track the update of Arch Linux official packages at https://www.archlinux.org/packages/, without needing of pacman and an updated local Pacman databases. Main character energy, honestly. π
archpkgβ name of the Arch Linux package.strip_releaseβ cuts off the release part and hands you back only the bit before the-. Bestie, it's giving "just the vibes, not the build number" πprovidedβ instead of the package's own version, it gives you back the version this package provides. Its value is literally what the package provides, andstrip_releasestill does its thing on top. This one is best used with libraries, iykyk π
π§ Check Debian Linux official packages β¨
source = "debianpkg"
This lets you track updates of Debian Linux official packages <https://packages.debian.org> β and the iconic part? no apt needed, no updated local APT database needed. Literally zero setup drama π«Ά
debianpkgβ the name of the Debian Linux source package.suiteβ the name of the Debian release (jessie,wheezy, etc.). Defaults tosid, no cap.strip_releaseβ strips the release part. bye π
π¦ Check Ubuntu Linux official packages πΈ
source = "ubuntupkg"
Track updates of Ubuntu Linux official packages <https://packages.ubuntu.com/> β again, no apt and no updated local APT database required. We love a low-maintenance icon π
ubuntupkgβ the name of the Ubuntu Linux source package.suiteβ the name of the Ubuntu release (xenial,zesty, etc.). Defaults toNone, which literally means no limit on suite.strip_releaseβ strips the release part. same energy, different distro π
π₯ Check Repology π
source = "repology"
This one lets you track updates straight from Repology <https://repology.org/> (repology.org). It's giving main character of package indexes, honestly β
repologyβ the name of the project to check.repoβ check the version in this repo. This field is required, don't forget it or it simply will not work πsubrepoβ check the version in this subrepo. This field is optional. When you omit it, all subrepos are queried β go big or go home, periodt.
This source supports List Options. π
π§ Check Anitya π
source = "anitya"
Tracks updates from Anitya <https://release-monitoring.org/> (release-monitoring.org). Cute name, serious business β¨
anityaβdistro/package, where distro can be a whole lot of things like"fedora","arch linux","gentoo", etc. And package is the package name of whichever distribution you picked.anitya_idβ the identifier of the project/package in anitya.
Heads up bestie: you need eitheranityaoranitya_idspecified. And when both are there,anitya_idwins β it's preferred, no debate π
π Check Android SDK π
source = "android_sdk"
This lets you track updates of Android SDK packages listed in sdkmanager --list. Very demure, very mindful π§ββοΈ
android_sdkβ the package path prefix. This value gets matched against thepathattribute in all<remotePackage>nodes in an SDK manifest XML, and the first match is used for version comparisons. First come, first served πrepoβ should be one ofaddonorpackage. Packages inaddon2-1.xmluseaddon, and packages inrepository2-1.xmlusepackage. Match the file to the value, don't mix them up πchannelβ pick the target channel from one ofstable,beta,devorcanary. This option also accepts a comma-separated list to pick from multiple channels β like, the latest unstable version gets picked withbeta,dev,canary. Default isstable. πhost_osβ pick the target OS for the tracked package from one oflinux,macosx,windows. Default islinux. For OS-independent packages (e.g., Java JARs), this field is ignored β it simply doesn't apply, no hard feelings π«Ά
This source supports List Options. π
β Check Sparkle framework π¦
source = "sparkle"
Tracks updates of macOS applications that are using the Sparkle framework <https://sparkle-project.org/>. macOS girlies, this one's for you π
sparkleβ the url of the sparkle appcast.release_notes_languageβ the language of release notes to return when localized release notes are available. Defaults toenfor English, and the unlocalized release notes are used as a fallback. So you always get something, slay πΈ
π Check Pagure π«
source = "pagure"
Lets you check updates from Pagure <https://pagure.io>. Iconic behavior π
pagureβ the project name, optionally with a namespace.hostβ hostname of an alternative instance, likesrc.fedoraproject.org.
This source returns tags and supports List Options. Double threat fr fr π
π Check APT repository π
source = "apt"
Track the update of an arbitrary APT repository β and yes, without needing apt or an updated local APT database. The freedom of it all πβ¨
pkgβ name of the APT binary package.srcpkgβ name of the APT source package.mirrorβ URL of the repository.suiteβ name of the APT repository release (jessie,wheezy, etc.).repoβ name of the APT repository (main,contrib, etc.). Defaults tomain.archβ architecture of the repository (i386,amd64, etc.). Defaults toamd64.strip_releaseβ strips the release part. classic π
Okay listen: eitherpkgorsrcpkgneeds to be specified β but not both. And if you specify neither, the item name gets used aspkg. The rules are the rules π«Ά
π§ Check Git repository β
source = "git"
Check tags or branch commits of any old git repository. It's also lowkey perfect for scenarios like a github project having way too many tags β we've all been there π
gitβ URL of the Git repository.use_commitβ return a commit hash instead of tags.branchβ whenuse_commitis true, return the commit on the specified branch instead of the default one.
When this source returns tags (use_commit is not true) it supports List Options. π
π Check Mercurial repository π¦
source = "mercurial"
Check tags of an arbitrary mercurial (hg) repository. Yes, hg still exists, and yes, we respect her π
mercurialβ URL of the Mercurial repository.
This source returns tags and supports List Options. π
π³ Check container registry π
source = "container"
Check tags of images on a container registry like Docker. Container girlies rise π«Ά
containerβ the path (and tag) for the container image. For official Docker images, use the namespacelibrary/(e.g.library/python).
If no tag is given, it checks the latest available tag (sort by tag name). Otherwise, it checks the tag's update time. β¨
registryβ the container registry host. Default:docker.io.
registry and container are the host and the path used in the pull command. Note that the docker command allows omitting some parts of the container name, while this plugin requires the full name. If the host part is omitted, use docker.io, and if there is no slash in the path, prepend library/ to the path. Here are some examples, because honestly same π:
docker pull quay.io/prometheus/node-exporterβregistry=quay.io,container=prometheus/node-exporterdocker pull quay.io/prometheus/node-exporter:masterβregistry=quay.io,container=prometheus/node-exporter:masterdocker pull openeuler/openeulerβregistry=docker.io,container=openeuler/openeulerdocker pull openeuler/openeuler:20.03-ltsβregistry=docker.io,container=openeuler/openeuler:20.03-ltsdocker pull pythonβregistry=docker.io,container=library/pythondocker pull python:3.11βregistry=docker.io,container=library/python:3.11
See? Full names only, bestie. It's giving extra but it's correct π β¨
ποΈ Check ALPM database
source = "alpm"
Checks for package updates in a local ALPM database. Local. Like, on your machine. Bestie it is not going to the internet for you π
alpmβ the name of the package.repoβ the name of the package repository the package lives in. If you don't give it, nvchecker will fall back to thereposvalue, see below.reposβ an array of possible repositories the package might live in, and nvchecker will use the first repository that contains the package. If you don't provide it,core,extraandmultilibget used, in that exact order.dbpathβ path to the ALPM database directory. Default:/var/lib/pacman. Heads up though: you have to update the database yourself, it's not gonna do it for you πstrip_releaseβ strips the release part, so only the part before-comes back.providedβ instead of the package version, return the version this package provides. Its value is whatever the package provides, andstrip_releasetakes effect here too. This one is best used with libraries π«Ά
β οΈ NOTE: you need one extra dependency for this one β pyalpm. No cap, it won't work without it.
π Check ALPM files database
source = "alpmfiles"
Searches package files in a local ALPM files database. The package does not need to be installed β which is honestly iconic for checking shared library versions when a package doesn't list them in its provides πΈ
pkgnameβ name of the package.filenameβ a regular expression for the file path. If it contains one matching group, that group is what gets returned. Otherwise you get the whole file path back. Paths don't have an initial slash. For example,usr/lib/libuv\\.so\\.([^.]+)matches the major shared library version oflibuvβ¨repoβ name of the package repository the package lives in. If you don't provide it, it searches all repositories.strip_dirβ strips the directory from the path before matching. Defaults tofalse.dbpathβ path to the ALPM database directory. Default:/var/lib/pacman. And again, you need to update the database yourself withpacman -Fyπ
π§© Check Open Vsx
source = "openvsx"
Checks Open Vsx <https://open-vsx.org/> for updates. Obsessed with extensions? This is your girl.
openvsxβ the extension's Unique Identifier on open-vsx.org, e.g.ritwickdey.LiveServer.
ποΈ Check Visual Studio Code Marketplace
source = "vsmarketplace"
Checks Visual Studio Code Marketplace <https://marketplace.visualstudio.com/vscode/> for updates. Same energy, different marketplace π
vsmarketplaceβ the extension's Unique Identifier on marketplace.visualstudio.com/vscode, e.g.ritwickdey.LiveServer.
πΉ Check Go packages and modules
source = "go"
Checks Go packages and modules <https://pkg.go.dev/> for updates. Gopher besties rise π«Ά
goβ the name of the Go package or module, e.g.github.com/caddyserver/caddy/v2/cmd.
𧬠Combine others' results
source = "combiner"
This source can combine results from other entries. It's giving main character energy that only works because of its supporting cast π
fromβ a list of entry names to wait results for.formatβ a format string to combine the results into the final string.
Example, because seeing it is believing:
[entry-1]
source = "cmd"
cmd = "echo 1"
[entry-2]
source = "cmd"
cmd = "echo 2"
[entry-3]
source = "combiner"
from = ["entry-1", "entry-2"]
format = "$1-$2"
β Manually updating
source = "manual"
This enables you to manually specify the version β maybe because you want to approve each release before it gets to the script. Very "I'm the manager here" of you π
manualβ the version string.
π Extending
Okay so you can extend the supported sources by writing plugins π§ See plugin for the documentation. Go build something cute, iykyk.
β¨ and that's the whole page bestie β¨
This one came from the nvchecker manual, version 2.16, dated 2024-12-12 β shoutout to whoever wrote it, they ate and left no crumbs π
π Go forth and check those versions, bestie. Bye fr fr π¦
π¦ where this page comes from
- debian trixie: python3-nvchecker 2.16-1 Β· MIT
- ubuntu questing: python3-nvchecker 2.16-1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms