diff --git a/build.profile b/build.profile
index 270eb07..f1f2beb 100644
--- a/build.profile
+++ b/build.profile
@@ -1,4 +1,4 @@
-BUILD_TAG=2.8.3
+BUILD_TAG=2.8.5
. build.local
@@ -13,7 +13,7 @@ LOGDIR=${PROJECT}/log
BUILD_sqlite=sqlite-3.45.3
BUILD_redis=redis-7.2.4
BUILD_python=Python-3.11.9
-BUILD_node=node-20.13.0
+BUILD_node=node-20.13.1
BUILD_ffmpeg=ffmpeg-7.0
BUILD_pngquant=pngquant-3.0.3-3-gdbb78b1
BUILD_unpaper=unpaper-7.0.0-125-gfe89949
@@ -26,4 +26,4 @@ BUILD_jbig2enc=jbig2enc-0.28-17-gea05019
BUILD_jbig2dec=jbig2dec-0.20
BUILD_libfontttf=liberation-fonts-ttf-2.1.5
-BUILD_paperless=paperless-ngx-2.8.3
+BUILD_paperless=paperless-ngx-2.8.5
diff --git a/checkversions.sh b/checkversions.sh
index d387c34..045e303 100755
--- a/checkversions.sh
+++ b/checkversions.sh
@@ -1,5 +1,6 @@
#!/bin/bash
set -u
+
. build.profile
pfmt="%28s --> "
@@ -22,19 +23,60 @@ function parsefile() {
B=$1
U=$2
P=$3
- printf "${pfmt}" "${B}"
- curl -s -L "${U}" | grep --max-count=1 -P "${P}"
+ curl -s -L "${U}" | grep --max-count=1 -oP "${P}"
+}
+
+# git_describe_remote
+function gdrem() {
+ B=$1
+ G=$2
+ P=$3
+ C=${4:-'(?<=
Release ).*?(?=<)'}
+ set +x
+ L=$(git ls-remote --refs --sort=-v:refname "https://github.com/${G}" "${P}" | head -1)
+ set +x
+ IFS=[$'\t'/]
+ set -- $L
+ SHA=$1
+ TAG=$4
+# echo "SHA:${SHA}"
+# echo -n "TAG:${TAG}"
+ set +x
+ printf "${pfmt} / ${TAG} / " "${B}"
+ parsefile "${B}" "https://github.com/${G}/releases/tag/${TAG}" "${C}"
+ set +x
}
+function parse() {
+ B=$1
+ U=$2
+ P=$3
+ printf "${pfmt} " "${B}"
+ parsefile "${B}" "${U}" "${P}"
+}
+# https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest&
+
+gdrem "${BUILD_paperless}" paperless-ngx/paperless-ngx 'refs/tags/v*'
+
+parse "${BUILD_node}" 'https://github.com/nodejs/node/releases' '(?<=Version )\S+'
+parse "${BUILD_python}" 'https://raw.githubusercontent.com/python/peps/main/peps/pep-0664.rst' '(?<=^- ).*(?=:.*final)'
+parse "${BUILD_redis}" 'http://download.redis.io/redis-stable/00-RELEASENOTES' '(?<=Redis\s).*(?=\s+Released)'
+parse "${BUILD_sqlite}" 'https://sqlite.org/index.html' '(?<=Version ).*(?=<)'
+
+parse "${BUILD_nginx}" 'https://nginx.org/' '(?<=nginx-).*?(?=<)'
+
+gdrem "${BUILD_tesseract}" tesseract-ocr/tesseract 'refs/tags/[0-9]*'
+gdrem "${BUILD_tessdata}" tesseract-ocr/tessdata_best 'refs/tags/[0-9]*'
+gdrem "${BUILD_jbig2dec}" ArtifexSoftware/jbig2dec 'refs/tags/[0-9]*'
+gdrem "${BUILD_jbig2enc}" agl/jbig2enc 'refs/tags/[0-9]*'
+
+gdrem "${BUILD_leptonica}" DanBloomberg/leptonica 'refs/tags/[0-9]*'
+
+parse "${BUILD_ffmpeg}" 'https://git.videolan.org/?p=ffmpeg.git;a=blob_plain;f=Changelog' '(?<=^version )\d.*(?=:)'
+gdrem "${BUILD_pngquant}" kornelski/pngquant 'refs/tags/*'
+
+
+gdrem "${BUILD_zbar}" mchehab/zbar 'refs/tags/[0-9]*'
+gdrem "${BUILD_unpaper}" unpaper/unpaper 'refs/tags/unpaper-*' '(?<= )[0-9]+(?= commits)'
+gdrem "${BUILD_libfontttf}" liberationfonts/liberation-fonts 'refs/tags/[0-9]*'
-parsefile "${BUILD_sqlite}" 'https://sqlite.org/index.html' 'releaselog/'
-parsefile "${BUILD_redis}" 'http://download.redis.io/redis-stable/00-RELEASENOTES' '^Redis \S+\s+Released'
-ghrel "${BUILD_tesseract}" tesseract-ocr/tesseract
-ghtag "${BUILD_tessdata}" tesseract-ocr/tessdata_best
-ghrel "${BUILD_jbig2dec}" ArtifexSoftware/jbig2dec
-ghrel "${BUILD_jbig2enc}" agl/jbig2enc
-ghrel "${BUILD_leptonica}" DanBloomberg/leptonica
-ghtag "${BUILD_pngquant}" kornelski/pngquant
-ghrel "${BUILD_unpaper}" unpaper/unpaper
-ghrel "${BUILD_zbar}" mchehab/zbar
-ghrel "${BUILD_paperless}" paperless-ngx/paperless-ngx