| 1 | #!/bin/bash |
| 2 | # |
| 3 | # This script gets ports from an overlay that need to be updated |
| 4 | # |
| 5 | # Note: Before execute this script you should be run 'ports -u' to be sure |
| 6 | # you're up to date |
| 7 | |
| 8 | checkOverlayUpdates() { |
| 9 | overlay=$1 |
| 10 | repo=${overlay/-arm*/} |
| 11 | |
| 12 | if [ "$overlay" == "$repo" ]; then |
| 13 | echo "Error, $overlay is not a valid overlay" |
| 14 | exit 1 |
| 15 | fi |
| 16 | |
| 17 | # check for existing repo |
| 18 | case $repo in |
| 19 | core|opt|xorg|contrib) ;; |
| 20 | *) echo "Error, $repo is not a valid repo"; exit 1;; |
| 21 | esac |
| 22 | |
| 23 | # obtain paths |
| 24 | overlay_path=$(grep 'destination' /etc/ports/$overlay.{rsync,httpup} 2>/dev/null | cut -d'=' -f2) |
| 25 | repo_path=$(grep 'destination' /etc/ports/$repo.{rsync,httpup} 2>/dev/null | cut -d'=' -f2) |
| 26 | |
| 27 | # foreach overlayed port check for updates available |
| 28 | find $overlay_path -type f -name 'Pkgfile' -exec dirname {} \; | while read o_port; do |
| 29 | port=$repo_path/$(basename $o_port) |
| 30 | # get versions for both (port and o_port) |
| 31 | . $port/Pkgfile |
| 32 | port_version=$version-$release |
| 33 | . $o_port/Pkgfile |
| 34 | o_port_version=$version-$release |
| 35 | if [ "$port_version" != "$o_port_version" ]; then |
| 36 | printf "%-20s %10s %10s\n" $(basename $port) $o_port_version $port_version >> $TMP_FILE |
| 37 | fi |
| 38 | done |
| 39 | |
| 40 | if [ "$(wc -l $TMP_FILE)" != "0" ]; then |
| 41 | printf "%-20s %10s %10s\n" "PORT" $overlay $repo |
| 42 | cat $TMP_FILE && : > $TMP_FILE |
| 43 | echo |
| 44 | fi |
| 45 | } |
| 46 | |
| 47 | if [ $# -lt 1 ]; then |
| 48 | echo "Usage: $(basename $0) [repo_overlay]" |
| 49 | exit 1 |
| 50 | fi |
| 51 | |
| 52 | TMP_FILE=$(mktemp) |
| 53 | |
| 54 | for TARGET in $@; do |
| 55 | checkOverlayUpdates $TARGET |
| 56 | done |
| 57 | |
| 58 | rm -f $TMP_FILE |
| 59 | |
| 60 | # End of file |