changeset 8:208545b92d43

First working version: real useful output of packages differing from any repo
author Franz Glasner <hg@dom66.de>
date Sun, 22 Oct 2017 18:06:32 +0200
parents 2712d249c371
children 6b77068e7ec8
files bin/check-ports
diffstat 1 files changed, 56 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/bin/check-ports	Sun Oct 22 14:36:16 2017 +0200
+++ b/bin/check-ports	Sun Oct 22 18:06:32 2017 +0200
@@ -5,7 +5,9 @@
 : ${PORTS_DIRECT_INSTALLED_REPO:=unknown-repository}
 
 get_remote_repo_versions() {
-    _repo="$1"
+    local _repo _data _rv
+
+    _repo=$1
 
     _data=$(pkg version -U -R -r ${_repo} -v)
     _rv=$?
@@ -13,13 +15,53 @@
     return ${_rv}
 }
 
+get_remote_repo_data() {
+    local _repo _name _rversions _rfqp _rl _rdescr
+
+    _repo=$1
+    _name=$2
+
+    eval _rversions=\"\${remote_${_repo}_versions}\"
+    while read _rfqp _rl _rdescr ; do
+	if [ ${_rfqp%-*} = ${_name} ] ; then
+	    eval remote_${_repo}_label=\${_rl}
+	    eval remote_${_repo}_descr=\"\${_rdescr}\"
+	    return 0
+	fi
+    done <<EOF884657
+${_rversions}
+EOF884657
+    eval remote_${_repo}_label=""
+    eval remote_${_repo}_descr=""
+    return 1
+}
+
 get_local_index_versions() {
     local_index_versions=$(pkg version -I -v)
 }
 
+get_repo_for_package() {
+    local _name _n _v _r
+
+    _name=$1
+
+    while read _n _v _r ; do
+	if [ ${_name} = ${_n} ] ; then
+	    repository=${_r}
+	    return 0
+	fi
+    done<<EOF223777
+${installed_data}
+EOF223777
+    return 1
+}
+
 assert_local_version() {
+    local _name _version _n _v _r
+
     _name=$1
     _version=$2
+
     while read _n _v _r ; do
 	if [ ${_name} = ${_n} ] ; then
 	    if [ ${_version} != ${_v} ] ; then
@@ -44,11 +86,22 @@
 while read lfqp llabel ldescr ; do
     _installed_name=${lfqp%-*}
     _installed_version=${lfqp##*-}
-    echo $lfqp ${_installed_name} ${_installed_version} ${llabel}
+    #echo $lfqp ${_installed_name} ${_installed_version} ${llabel}
     if ! assert_local_version ${_installed_name} ${_installed_version} ; then
-	echo "Assertion failed" >&2
+	echo "Assertion failed: $lfqp ${_installed_name} ${_installed_version} ${llabel}" >&2
 	exit 1
     fi
+    get_remote_repo_data ${LOCAL_REPO} ${_installed_name}
+    get_remote_repo_data ${FREEBSD_REPO} ${_installed_name}
+    get_repo_for_package ${_installed_name}
+    if [ \( ${llabel} != '?' -a ${llabel} != '=' \) -o \( ${remote_FreeBSD_label} != '?' -a ${remote_FreeBSD_label} != '=' \) -o \( ${remote_LocalRepo_label} != '?' -a ${remote_LocalRepo_label} != '=' \) ] ; then
+	echo "${lfqp}    (${repository})"
+	echo "   ${ldescr}"
+	echo "   FreeBSD: ${remote_FreeBSD_descr}"
+	if [ ${remote_LocalRepo_label} != '?' ] ; then
+	    echo "   LocalRepo: ${remote_LocalRepo_descr}"
+	fi
+    fi
 done <<EOF856661111299999
 ${local_index_versions}
 EOF856661111299999