diff --git a/check-attrpath-version.sh b/check-attrpath-version.sh new file mode 100755 index 0000000..0f93349 --- /dev/null +++ b/check-attrpath-version.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +set -euxo pipefail + +ATTR_PATH=$1 +NEW_VERSION=$2 + +ATTR_VERSION_PART=$(echo "$ATTR_PATH" | sed -n 's/^[^0-9]*\([0-9_]*\)$/\1/p') + +# If we don't find version numbers in the attr path, exit success. +if [ -z "$ATTR_VERSION_PART" ] +then + exit 0 +fi + +# Check assuming version part has underscore separators +ATTR_VERSION_PERIODS=$(echo "$ATTR_VERSION_PART" | sed -n 's/_/\./gp') + +if [ -n "$ATTR_VERSION_PERIODS" ] +then + if [[ "$NEW_VERSION" == $ATTR_VERSION_PERIODS* ]] + then + exit 0 + fi +fi + +# Check assuming version part is the prefix of the version with dots +# removed. For example, 91 => "9.1" +NO_PERIOD_NEW_VERSION=$(echo "$NEW_VERSION" | sed -n 's/\.//gp') + +if [ -n "$NO_PERIOD_NEW_VERSION" ] +then + if [[ "$NO_PERIOD_NEW_VERSION" == $ATTR_VERSION_PART* ]] + then + exit 0 + fi +fi + +exit 1 diff --git a/up.sh b/up.sh index 0f0fea2..1927bd2 100755 --- a/up.sh +++ b/up.sh @@ -133,6 +133,8 @@ then error_exit "Derivation contains buildPerlPackage." fi +$("$SCRIPT_DIR"/check-attrpath-version.sh "$ATTR_PATH" "$NEW_VERSION") || error_exit "$ATTR_PATH version not compatible with $NEW_VERSION" + # Make sure it hasn't been updated on master grep "$OLD_VERSION" "$DERIVATION_FILE" || error_exit "Old version not present in master derivation file."