changeset 1:7c9ddbea00c8

Work on the check script
author Franz Glasner <hg@dom66.de>
date Wed, 11 Oct 2017 09:24:41 +0200
parents 08cf7bf119b7
children 8781814174df
files bin/check-ports
diffstat 1 files changed, 60 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/bin/check-ports	Tue Oct 10 22:43:50 2017 +0200
+++ b/bin/check-ports	Wed Oct 11 09:24:41 2017 +0200
@@ -1,5 +1,9 @@
 #!/bin/sh
 
+: ${LOCAL_REPO:=LocalRepo}
+: ${FREEBSD_REPO:=FreeBSD}
+: ${PORTS_DIRECT_INSTALLED_REPO:=unknown-repository}
+
 installed_packages=$(pkg query '%n')
 
 #for p in ${installed_packages} ; do
@@ -15,17 +19,65 @@
 #	echo $vn $vv ${remote_ver} ${version_compare} $vR
 #    done
 
-installed_data="$(pkg query '%n/%v/%R' $installed_packages)"
+do_rquery() {
+    _repo="$1"
+    _packagage_name="$2"
+
+    remote_ver=$(pkg rquery -U -r ${_repo} '%v' ${_package_name})
+}
+
+remote_data() {
+    _repo="$1"
+    shift
+
+    _temp=$(pkg rquery -U -r "${_repo}" '%n|%v' "$@")
+    _rv=$?
+    eval remote_${_repo}_data="\"\${_temp}\""
+    return ${_rv}
+}
+
+all_remote_data() {
+    _repo="$1"
+    _temp=$(pkg rquery -U -r "${_repo}" --all '%n|%v')
+    _rv=$?
+    eval remote_${_repo}_data="\"\${_temp}\""
+    return ${_rv}
+}
+
+query_repo() {
+    _repo="$1"
+    _package_name="$2"
+
+    eval _repo_packages="\${remote_${_repo}_data}"
+    while read _p _v ; do
+	if [ "$_p" = "${_package_name}" ] ; then
+	    repo_version="${_v}"
+	    return 0
+	fi
+    done <<EOFABCDEFG43
+${_repo_packages}
+EOFABCDEFG43
+    repo_version=""
+    return 1
+}
+
+installed_data="$(pkg query '%n|%v|%R' $installed_packages)"
+
+all_remote_data FreeBSD
+all_remote_data LocalRepo
 
 _OLDIFS="${IFS}"
-IFS='/'
+IFS='|'
+
 while read vn vv vR ; do
-    remote_ver=$(pkg rquery -r FreeBSD '%v' $vn)
-    if [ "${vR}" != "unknown-repository" ] ; then
-        version_compare=$(pkg version --test-version ${vv} ${remote_ver})
-        if [ "${version_compare}" != '=' ] ; then
-            echo $vn $vv ${version_compare} ${remote_ver} $vR
-	fi
+    if [ "${vR}" = "unknown-repository" ] ; then
+	_local_ver_label="$(pkg version -U -I -n ${vn} | sed -E -e 's/.+[[:space:]]+//')"
+    elif [ "${vR}" = "${LOCAL_REPO}" ] ; then
+	query_repo "${vR}" "${vn}"
+    elif [ "${vR}" = "${FREEBSD_REPO}" ] ; then
+	query_repo "${vR}" "${vn}" 
+    else
+	echo "UNKNOWN REPOSITORY \`${vR}' for packet \`${vn}'" >&2
     fi
 done <<EOFEOFEOF687
 ${installed_data}