From f15117a8740afa450a048b1abf99a962dabbd616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Romildo?= Date: Tue, 27 Sep 2022 17:49:23 -0300 Subject: [PATCH] generic-updater: more flexible with name, pname, version and attr path - This information is availabe from environment variables defined by maintainers/scripts/update.nix - Renamed the shell script to generic-update-script.sh - Add a new optional argument (representing the package name) to the shell script - The version lister is called with a new optional argument (representing the package attribute path) --- pkgs/common-updater/generic-updater.nix | 41 +++++++++++-------- pkgs/common-updater/git-updater.nix | 6 +-- .../http-two-levels-updater.nix | 6 +-- .../scripts/list-archive-two-levels-versions | 38 ++++++++++------- pkgs/common-updater/scripts/list-git-tags | 28 ++++++++----- 5 files changed, 71 insertions(+), 48 deletions(-) diff --git a/pkgs/common-updater/generic-updater.nix b/pkgs/common-updater/generic-updater.nix index 7a919ff5845e..04adcf563814 100644 --- a/pkgs/common-updater/generic-updater.nix +++ b/pkgs/common-updater/generic-updater.nix @@ -1,8 +1,9 @@ { stdenv, writeScript, coreutils, gnugrep, gnused, common-updater-scripts, nix }: -{ pname -, version -, attrPath ? pname +{ name ? null +, pname ? null +, version ? null +, attrPath ? null , versionLister , ignoredVersions ? "" , rev-prefix ? "" @@ -15,22 +16,28 @@ let fileForGitCommands = "update-git-commits.txt"; # shell script to update package - updateScript = writeScript "update-script.sh" '' + updateScript = writeScript "generic-update-script.sh" '' #! ${stdenv.shell} set -o errexit set -x - pname="$1" - version="$2" - attr_path="$3" - version_lister="$4" - ignored_versions="$5" - rev_prefix="$6" - odd_unstable="$7" - patchlevel_unstable="$8" + name="$1" + pname="$2" + version="$3" + attr_path="$4" + version_lister="$5" + ignored_versions="$6" + rev_prefix="$7" + odd_unstable="$8" + patchlevel_unstable="$9" + + [[ -n "$name" ]] || name="$UPDATE_NIX_NAME" + [[ -n "$pname" ]] || pname="$UPDATE_NIX_PNAME" + [[ -n "$version" ]] || version="$UPDATE_NIX_OLD_VERSION" + [[ -n "$attr_path" ]] || attr_path="$UPDATE_NIX_ATTR_PATH" # print header - echo "# $pname-$version" >> ${fileForGitCommands} + echo "# $name" >> ${fileForGitCommands} function version_is_ignored() { local tag="$1" @@ -55,7 +62,7 @@ let return 1 } - tags=$($version_lister --pname=${pname} --file="${fileForGitCommands}") || exit 1 + tags=$($version_lister --pname=$pname --attr-path=$attr_path --file="${fileForGitCommands}") || exit 1 # print available tags for tag in $tags; do @@ -104,5 +111,7 @@ let echo "" >> ${fileForGitCommands} ''; -in -[ updateScript pname version attrPath versionLister ignoredVersions rev-prefix odd-unstable patchlevel-unstable ] +in { + name = "generic-update-script"; + command = [ updateScript name pname version attrPath versionLister ignoredVersions rev-prefix odd-unstable patchlevel-unstable ]; +} diff --git a/pkgs/common-updater/git-updater.nix b/pkgs/common-updater/git-updater.nix index b68f4a29011d..86bf88ada8c4 100644 --- a/pkgs/common-updater/git-updater.nix +++ b/pkgs/common-updater/git-updater.nix @@ -3,9 +3,9 @@ , common-updater-scripts }: -{ pname -, version -, attrPath ? pname +{ pname ? null +, version ? null +, attrPath ? null , ignoredVersions ? "" , rev-prefix ? "" , odd-unstable ? false diff --git a/pkgs/common-updater/http-two-levels-updater.nix b/pkgs/common-updater/http-two-levels-updater.nix index f9e1e1b7204a..8ece1161015c 100644 --- a/pkgs/common-updater/http-two-levels-updater.nix +++ b/pkgs/common-updater/http-two-levels-updater.nix @@ -3,9 +3,9 @@ , common-updater-scripts }: -{ pname -, version -, attrPath ? pname +{ pname ? null +, version ? null +, attrPath ? null , ignoredVersions ? "" , rev-prefix ? "" , odd-unstable ? false diff --git a/pkgs/common-updater/scripts/list-archive-two-levels-versions b/pkgs/common-updater/scripts/list-archive-two-levels-versions index 4263a9de3ca3..11db08ad07b8 100755 --- a/pkgs/common-updater/scripts/list-archive-two-levels-versions +++ b/pkgs/common-updater/scripts/list-archive-two-levels-versions @@ -2,20 +2,24 @@ # lists all available versions listed for a package in a site (http) -archive="" # archive url pname="" # package name +attr_path="" # package attribute path +url="" # directory list url file="" # file for writing debugging information while (( $# > 0 )); do flag="$1" shift 1 case "$flag" in - --url=*) - archive="${flag#*=}" - ;; --pname=*) pname="${flag#*=}" ;; + --attr-path=*) + attr_path="${flag#*=}" + ;; + --url=*) + url="${flag#*=}" + ;; --file=*) file="${flag#*=}" ;; @@ -26,29 +30,33 @@ while (( $# > 0 )); do esac done -# by default set url to the base dir of the first url in src.urls -if [[ -z "$archive" ]]; then - archive="$(nix-instantiate $systemArg --eval -E \ - "with import ./. {}; dirOf (dirOf (lib.head $UPDATE_NIX_ATTR_PATH.src.urls))" \ - | tr -d '"')" +if [[ -z "$pname" ]]; then + pname="$UPDATE_NIX_NAME" fi -if [[ -z "$pname" ]]; then - pname="$UPDATE_NIX_ATTR_PATH" +if [[ -z "$attr_path" ]]; then + attr_path="$UPDATE_NIX_ATTR_PATH" +fi + +# by default set url to the base dir of the first url in src.urls +if [[ -z "$url" ]]; then + url="$(nix-instantiate $systemArg --eval -E \ + "with import ./. {}; dirOf (dirOf (lib.head $attr_path.src.urls))" \ + | tr -d '"')" fi # print a debugging message if [[ -n "$file" ]]; then - echo "# Listing versions for '$pname' at $archive" >> $file + echo "# Listing versions for '$pname' at $url" >> $file fi -# list all major-minor versions from archive -tags1=$(curl -sS "$archive/") +# list all major-minor versions from url +tags1=$(curl -sS "$url/") tags1=$(echo "$tags1" | sed -rne 's,^.*,\1,p') # print available versions for tag in $tags1; do - tags2=$(curl -sS "$archive/$tag/") + tags2=$(curl -sS "$url/$tag/") tags2=$(echo "$tags2" | sed -rne "s,^.*,\\1,p") echo "$tags2" done diff --git a/pkgs/common-updater/scripts/list-git-tags b/pkgs/common-updater/scripts/list-git-tags index 86b4949f055d..186dfd5ea6d4 100755 --- a/pkgs/common-updater/scripts/list-git-tags +++ b/pkgs/common-updater/scripts/list-git-tags @@ -2,22 +2,24 @@ # lists all available tags from a git repository -echo "# pname=$UPDATE_NIX_ATTR_PATH" > /tmp/test.txt - +pname="" # package name +attr_path="" # package attribute path url="" # git repository url -pname="" # package name file="" # file for writing debugging information while (( $# > 0 )); do flag="$1" shift 1 case "$flag" in - --url=*) - url="${flag#*=}" - ;; --pname=*) pname="${flag#*=}" ;; + --attr-path=*) + attr_path="${flag#*=}" + ;; + --url=*) + url="${flag#*=}" + ;; --file=*) file="${flag#*=}" ;; @@ -28,17 +30,21 @@ while (( $# > 0 )); do esac done +if [[ -z "$pname" ]]; then + pname="$UPDATE_NIX_NAME" +fi + +if [[ -z "$attr_path" ]]; then + attr_path="$UPDATE_NIX_ATTR_PATH" +fi + # By default we set url to src.url or src.meta.homepage if [[ -z "$url" ]]; then url="$(nix-instantiate $systemArg --eval -E \ - "with import ./. {}; $UPDATE_NIX_ATTR_PATH.src.meta.homepage or $UPDATE_NIX_ATTR_PATH.src.url" \ + "with import ./. {}; $attr_path.src.meta.homepage or $attr_path.src.url" \ | tr -d '"')" fi -if [[ -z "$pname" ]]; then - pname="$UPDATE_NIX_ATTR_PATH" -fi - # print a debugging message if [[ -n "$file" ]]; then echo "# Listing tags for '$pname' at $url" >> $file