Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
view bin/check-ports @ 4:ba95569a12b1 last-query-implementation
Use standars word separators again (i.e. don't change IFS)
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Sat, 14 Oct 2017 22:07:58 +0200 |
| parents | 86209db28490 |
| children | 53c3500894d2 |
line wrap: on
line source
#!/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 # echo -n $p" " # pkg query '%v' $p # pkg rquery '%v' $p #done #pkg query '%n %v %R' $installed_packages | # while read vn vv vR ; do# # remote_ver=$(pkg rquery -r FreeBSD '%v' $vn) # version_compare=$(pkg version --test-version ${vv} ${remote_ver}) # echo $vn $vv ${remote_ver} ${version_compare} $vR # done 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)" remote_data FreeBSD ${installed_packages} remote_data LocalRepo ${installed_packages} while read vn vv vR ; do if [ "${vR}" = "${PORTS_DIRECT_INSTALLED_REPO}" ] ; then _local_ver_label="$(pkg version -U -I -n ${vn} | sed -E -e 's/.+[[:space:]]+//')" echo ${_local_ver_label} elif [ "${vR}" = "${LOCAL_REPO}" ] ; then if ! query_repo "${vR}" "${vn}" ; then echo "ERROR: ${vn} ${vR}" else echo "REPO: ${repo_version} vs. installed version ${vv}" fi elif [ "${vR}" = "${FREEBSD_REPO}" ] ; then if ! query_repo "${vR}" "${vn}" ; then echo "ERROR 2: ${vn} ${vR}" fi else echo "UNKNOWN REPOSITORY \`${vR}' for packet \`${vn}'" >&2 fi done <<EOFEOFEOF687 ${installed_data} EOFEOFEOF687
