Differences between version 3 and predecessor to the previous major change of KnowledgeBase/FreeBSD/CheckPorts.sh.
Other diffs: Previous Revision, Previous Author
Newer page: | version 3 | Last edited on Sunday, 10 January 2010 13:17:57 | by CyberLeo | Revert |
Older page: | version 2 | Last edited on Wednesday, 9 April 2008 6:15:33 | by CyberLeo | Revert |
@@ -1,5 +1,5 @@
-<verbatim
>
+<code brush=bash
>
#!/usr/bin/env bash
while [ -n "${1}" ]
do
@@ -91,5 +91,5 @@
[ -n "${disp_ports}" ] && print_deps | sort --key=2 --reverse | uniq -f 1 | sort | cut -f2 | while read name
do
pkgdb -qo "${name}"
done
-</verbatim
>
+</code
>
version 3
#!/usr/bin/env bash while [ -n "${1}" ] do case "${1}" in -d) disp_deptree=TRUE ;; -a) disp_pkg=TRUE ;; -p) disp_ports=TRUE ;; -h) cat <<EOF This tool will walk all your installed packages for out-of-date ports. You must update your ports tree before this will be accurate. -d Display deptree -a Display list of out-of-date packages -p Display list of port directory names corresponding to out-of-date packages EOF exit 8 ;; *) echo "Unknown option: ${1}"; echo "${0} -h for help"; exit 8 ;; esac shift done str_repeat() { repeat="${1}" while [ "${repeat}" -gt 0 ] do echo -n "${2}" repeat=$(( ${repeat} - 1)) done } clear_deps() { depth=0 storevar="list_${depth}" eval list=\${${storevar}} while [ -n "${list}" ] do echo "Clearing $storevar" unset $storevar depth=$(( ${depth} + 1 )) storevar="list_${depth}" eval list=\${${storevar}} done } resolve_deps(){ depth="${1}" storevar="list_${depth}" shift while [ -n "${1}" ] do [ -n "${disp_deptree}" ] && str_repeat ${depth} - [ -n "${disp_deptree}" ] && echo "${1}" eval ${storevar}="\"\${${storevar}} ${1}\"" deps=$(pkg_info -Rq "${1}" | sed -e '/^$/d') if [ -n "${deps}" ] then resolve_deps $(( ${depth} + 1 )) ${deps} depth=$(( ${depth} - 1 )) storevar="list_${depth}" fi shift done } print_deps() { depth=0 storevar="$(printf "list_%u" "${depth}")" eval list=\${${storevar}} while [ -n "${list}" ] do for item in ${list} do printf "%u\t%s\n" "${depth}" "${item}" done depth=$(( ${depth} + 1 )) storevar="list_${depth}" eval list=\${${storevar}} done } clear_deps [ -n "${disp_deptree}" ] && echo "" resolve_deps 0 $(pkg_version -vl '<' | cut -d' ' -f1) [ -n "${disp_pkg}" ] && echo "" [ -n "${disp_pkg}" ] && print_deps | sort --key=2 --reverse | uniq -f 1 | sort | cut -f 2 [ -n "${disp_ports}" ] && echo "" [ -n "${disp_ports}" ] && print_deps | sort --key=2 --reverse | uniq -f 1 | sort | cut -f2 | while read name do pkgdb -qo "${name}" done