Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
view bin/check-ports @ 9:6b77068e7ec8
Introduced option handling with getopts: implemented a "v" option (verbose)
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Sun, 22 Oct 2017 18:21:35 +0200 |
| parents | 208545b92d43 |
| children | f08b39dacb21 |
line wrap: on
line source
#!/bin/sh : ${LOCAL_REPO:=LocalRepo} : ${FREEBSD_REPO:=FreeBSD} : ${PORTS_DIRECT_INSTALLED_REPO:=unknown-repository} get_remote_repo_versions() { local _repo _data _rv _repo=$1 _data=$(pkg version -U -R -r ${_repo} -v) _rv=$? eval remote_${_repo}_versions=\"\${_data}\" 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 return 1 else return 0 fi fi done <<EOF223 ${installed_data} EOF223 return 2 } verbose_flag="" while getopts "v" _arg ; do case ${_arg} in v) verbose_flag=1 ;; \?) exit 2 ;; *) echo "option handling failed" >&2 exit 2 ;; esac done installed_packages=$(pkg query '%n') installed_data="$(pkg query '%n %v %R' $installed_packages)" get_remote_repo_versions ${LOCAL_REPO} get_remote_repo_versions ${FREEBSD_REPO} get_local_index_versions while read lfqp llabel ldescr ; do _installed_name=${lfqp%-*} _installed_version=${lfqp##*-} if [ -n "${verbose_flag}" ] ; then echo "${lfqp} (${repository})" fi if ! assert_local_version ${_installed_name} ${_installed_version} ; then 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 if [ -z "${verbose_flag}" ] ; then echo "${lfqp} (${repository})" fi 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
