common-updater-scripts: add allowedVersions parameter

By providing a regex in allowedVersions, users of genericUpdater,
gitUpdater, directoryListingUpdater, or httpTwoLevelsUpdater can exclude
versions that don't match the regex. This can be simpler to express than
constructing the complement regex in ignoredVersions.
This commit is contained in:
Ryan Hendrickson 2024-06-24 18:24:25 -04:00
parent 290062cacf
commit b639a50d15
4 changed files with 17 additions and 9 deletions

View File

@ -6,6 +6,7 @@
{ pname ? null
, version ? null
, attrPath ? null
, allowedVersions ? ""
, ignoredVersions ? ""
, rev-prefix ? ""
, odd-unstable ? false
@ -15,6 +16,6 @@
}:
genericUpdater {
inherit pname version attrPath ignoredVersions rev-prefix odd-unstable patchlevel-unstable;
inherit pname version attrPath allowedVersions ignoredVersions rev-prefix odd-unstable patchlevel-unstable;
versionLister = "${common-updater-scripts}/bin/list-directory-versions ${lib.optionalString (url != null) "--url=${lib.escapeShellArg url}"} ${lib.optionalString (extraRegex != null) "--extra-regex=${lib.escapeShellArg extraRegex}"}";
}

View File

@ -13,6 +13,7 @@
, version ? null
, attrPath ? null
, versionLister
, allowedVersions ? ""
, ignoredVersions ? ""
, rev-prefix ? ""
, odd-unstable ? false
@ -37,10 +38,11 @@ let
version="$3"
attr_path="$4"
version_lister="$5"
ignored_versions="$6"
rev_prefix="$7"
odd_unstable="$8"
patchlevel_unstable="$9"
allowed_versions="$6"
ignored_versions="$7"
rev_prefix="$8"
odd_unstable="$9"
patchlevel_unstable="$${10}"
[[ -n "$name" ]] || name="$UPDATE_NIX_NAME"
[[ -n "$pname" ]] || pname="$UPDATE_NIX_PNAME"
@ -52,7 +54,7 @@ let
function version_is_ignored() {
local tag="$1"
[ -n "$ignored_versions" ] && ${grep} -E "$ignored_versions" <<< "$tag"
[ -n "$ignored_versions" ] && ${grep} -E -e "$ignored_versions" <<< "$tag"
}
function version_is_unstable() {
@ -86,6 +88,9 @@ let
tags=$(echo "$tags" | ${sed} -e "s,^$rev_prefix,,")
fi
tags=$(echo "$tags" | ${grep} "^[0-9]")
if [ -n "$allowed_versions" ]; then
tags=$(echo "$tags" | ${grep} -E -e "$allowed_versions")
fi
# sort the tags in decreasing order
tags=$(echo "$tags" | ${coreutils}/bin/sort --reverse --version-sort)
@ -127,7 +132,7 @@ let
in {
name = "generic-update-script";
command = [ updateScript name pname version attrPath versionLister ignoredVersions rev-prefix odd-unstable patchlevel-unstable ];
command = [ updateScript name pname version attrPath versionLister allowedVersions ignoredVersions rev-prefix odd-unstable patchlevel-unstable ];
supportedFeatures = [
# Stdout must contain output according to the updateScript commit protocol when the update script finishes with a non-zero exit code.
"commit"

View File

@ -6,6 +6,7 @@
{ pname ? null
, version ? null
, attrPath ? null
, allowedVersions ? ""
, ignoredVersions ? ""
, rev-prefix ? ""
, odd-unstable ? false
@ -16,6 +17,6 @@
}:
genericUpdater {
inherit pname version attrPath ignoredVersions rev-prefix odd-unstable patchlevel-unstable;
inherit pname version attrPath allowedVersions ignoredVersions rev-prefix odd-unstable patchlevel-unstable;
versionLister = "${common-updater-scripts}/bin/list-git-tags ${lib.optionalString (url != null) "--url=${url}"}";
}

View File

@ -6,6 +6,7 @@
{ pname ? null
, version ? null
, attrPath ? null
, allowedVersions ? ""
, ignoredVersions ? ""
, rev-prefix ? ""
, odd-unstable ? false
@ -14,6 +15,6 @@
}:
genericUpdater {
inherit pname version attrPath ignoredVersions rev-prefix odd-unstable patchlevel-unstable;
inherit pname version attrPath allowedVersions ignoredVersions rev-prefix odd-unstable patchlevel-unstable;
versionLister = "${common-updater-scripts}/bin/list-archive-two-levels-versions ${lib.optionalString (url != null) "--url=${lib.escapeShellArg url}"}";
}