Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
diff bin/check-ports @ 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 | 86209db28490 |
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}
