mkpk

Систем за управљање пакетима који користи mk из система Plan9
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 97763f05fb7a1bd1aa0c93e47efc6f0dd017e1a5
родитељ 63cf7c23966879d20632d17c37db01708f7ac09a
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Wed,  3 Aug 2022 22:10:08 +0200

recent: New file

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
MTODO | 3+++
Mmkfile | 2+-
Arecent | 47+++++++++++++++++++++++++++++++++++++++++++++++
Atestrecent | 12++++++++++++
измењених датотека: 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