summary refs log tree commit diff
path: root/pkgs/common-updater
diff options
context:
space:
mode:
authorJosé Romildo <malaquias@gmail.com>2022-09-27 17:49:23 -0300
committerJosé Romildo <malaquias@gmail.com>2022-09-27 23:41:53 -0300
commitf15117a8740afa450a048b1abf99a962dabbd616 (patch)
tree2c102401c8fa676cafd249b35cd411ff868fea56 /pkgs/common-updater
parent6910e5840f961621b440a3fcf57d503a96d5e645 (diff)
downloadnixpkgs-f15117a8740afa450a048b1abf99a962dabbd616.tar
nixpkgs-f15117a8740afa450a048b1abf99a962dabbd616.tar.gz
nixpkgs-f15117a8740afa450a048b1abf99a962dabbd616.tar.bz2
nixpkgs-f15117a8740afa450a048b1abf99a962dabbd616.tar.lz
nixpkgs-f15117a8740afa450a048b1abf99a962dabbd616.tar.xz
nixpkgs-f15117a8740afa450a048b1abf99a962dabbd616.tar.zst
nixpkgs-f15117a8740afa450a048b1abf99a962dabbd616.zip
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)
Diffstat (limited to 'pkgs/common-updater')
-rw-r--r--pkgs/common-updater/generic-updater.nix41
-rw-r--r--pkgs/common-updater/git-updater.nix6
-rw-r--r--pkgs/common-updater/http-two-levels-updater.nix6
-rwxr-xr-xpkgs/common-updater/scripts/list-archive-two-levels-versions38
-rwxr-xr-xpkgs/common-updater/scripts/list-git-tags28
5 files changed, 71 insertions, 48 deletions
diff --git a/pkgs/common-updater/generic-updater.nix b/pkgs/common-updater/generic-updater.nix
index 7a919ff5845..04adcf56381 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 b68f4a29011..86bf88ada8c 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 f9e1e1b7204..8ece1161015 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 4263a9de3ca..11db08ad07b 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,^<a href="([0-9]+\.[0-9]+)/">.*,\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,^<a href=\"$pname-([0-9.]+)\\.[^0-9].*\">.*,\\1,p")
     echo "$tags2"
 done
diff --git a/pkgs/common-updater/scripts/list-git-tags b/pkgs/common-updater/scripts/list-git-tags
index 86b4949f055..186dfd5ea6d 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