чување 97763f05fb7a1bd1aa0c93e47efc6f0dd017e1a5
родитељ 63cf7c23966879d20632d17c37db01708f7ac09a
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Wed, 3 Aug 2022 22:10:08 +0200
recent: New file
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 4, додавања: 63(+), брисања: 1(-)
diff --git a/TODO b/TODO
@@ -10,6 +10,9 @@ TODO
- Version comparison? - Yes. Build only the latest package, if version is
not explicitly given
+[ ] Improve recent so it takes a list of versions like testrecent; add calling
+ of recent to lib/*.mk
+
[ ] mkpk fetch
[x] mkpk update
diff --git a/mkfile b/mkfile
@@ -3,7 +3,7 @@
MKFILES= `{ls lib/*.mk | sed 's,lib/,,'}
DOCS= README
-SCRIPTS= mkpk
+SCRIPTS= mkpk recent
install:QV:
if [ ! -e "$PKGDB" ]; then
diff --git a/recent b/recent
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+if [ $# -lt 2 ]; then
+ printf "Usage: %s [ver1] [ver2]\n" "${0##*/}" >&2
+ exit 1
+fi
+
+ver1=$1
+ver2=$2
+
+major1=$(echo $ver1 | sed 's/\([0-9]\+\)\..*/\1/')
+major2=$(echo $ver2 | sed 's/\([0-9]\+\)\..*/\1/')
+rest1=$(echo $ver1 | sed 's/[0-9]\+\.\(.*\)/\1/')
+rest2=$(echo $ver2 | sed 's/[0-9]\+\.\(.*\)/\1/')
+
+if [[ $major1 -gt $major2 ]]; then
+ echo $ver1
+ exit
+elif [[ $major1 -lt $major2 ]]; then
+ echo $ver2
+ exit
+fi
+
+minor1=$(echo $rest1 | sed 's/\([0-9]\+\)\..*/\1/')
+minor2=$(echo $rest2 | sed 's/\([0-9]\+\)\..*/\1/')
+rest1=$(echo $rest1 | sed 's/[0-9]\+\.\(.*\)/\1/')
+rest2=$(echo $rest2 | sed 's/[0-9]\+\.\(.*\)/\1/')
+
+if [[ $minor1 -gt $minor2 ]]; then
+ echo $ver1
+ exit
+elif [[ $minor1 -lt $minor2 ]]; then
+ echo $ver2
+ exit
+fi
+
+patch1=$(echo $rest1 | sed 's/\([0-9]\+\)\(-.*\)*/\1/')
+patch2=$(echo $rest2 | sed 's/\([0-9]\+\)\(-.*\)*/\1/')
+rest1=$(echo $rest1 | sed 's/[0-9]\+\(-\(.*\)\)*/\2/')
+rest2=$(echo $rest2 | sed 's/[0-9]\+\(-\(.*\)\)*/\2/')
+
+recent=$(printf "%s\n%s\n" $rest1 $rest2 | sort -n -r | sed 1q)
+if [[ "$recent" = "$rest1" ]]; then
+ echo $ver1
+else
+ echo $ver2
+fi
diff --git a/testrecent b/testrecent
@@ -0,0 +1,12 @@
+#!/bin/sh
+rec=
+prev=1.1.1
+for ver in 1.2.1-12-doo 1.2.1-33-zzz 1.3.1-3-df 1.3.1-12-adf ; do
+ cur=$(./recent $prev $ver)
+ printf "DEBUG: ver=%s\t\tcur=%s\t\trec=%s\n" "$ver" "$cur" "$rec"
+ if [[ "$cur" != "$rec" ]]; then
+ rec=$cur
+ fi
+ prev=$cur
+done
+echo $rec