mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 06:53:01 +00:00
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)
This commit is contained in:
parent
6910e5840f
commit
f15117a874
@ -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 ];
|
||||
}
|
||||
|
@ -3,9 +3,9 @@
|
||||
, common-updater-scripts
|
||||
}:
|
||||
|
||||
{ pname
|
||||
, version
|
||||
, attrPath ? pname
|
||||
{ pname ? null
|
||||
, version ? null
|
||||
, attrPath ? null
|
||||
, ignoredVersions ? ""
|
||||
, rev-prefix ? ""
|
||||
, odd-unstable ? false
|
||||
|
@ -3,9 +3,9 @@
|
||||
, common-updater-scripts
|
||||
}:
|
||||
|
||||
{ pname
|
||||
, version
|
||||
, attrPath ? pname
|
||||
{ pname ? null
|
||||
, version ? null
|
||||
, attrPath ? null
|
||||
, ignoredVersions ? ""
|
||||
, rev-prefix ? ""
|
||||
, odd-unstable ? false
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user