#!/bin/bash _revbump_probe() { local PS3='How to continue? ' declare -i choice= declare choices=( 'Re-download sources' 'Update source checksums' 'Update package footprint' 'Edit package spec' 'Start a shell' ) printf "%b" "\a\n\nSelect an option:\n" >&2 printf "%q\n" "${choices[@]}" declare PS3='How to continue? ' select choice in "${choices[@]}"; do echo "$REPLY" echo "$choice" break done } revbump() { # local action= dir= declare -- name=$1 declare -- version=$2 declare -a choices=( # 're-[d]ownload sources' # 'update source [m]d5sums' '[U]pdate package footprint' '[E]dit spec file' '[I]nstall package' ) if [ -z "$name" -o -z "$version" ]; then echo "usage: $0 " >&2 return 1 fi cd "$(prt-get path $name)" && sed -i Pkgfile \ -e "s/^version=.*/version=$version/" \ -e "s/^release=.*/release=1/" && pkgmk -do && pkgmk -um && # until pkgmk && prt-get update "$name"; do while ! pkgmk; do printf " * %-36s\n" "${choices[@]}" >&2 read case "$REPLY" in [dD]) pkgmk -do ;; [eE]) ${EDITOR:-command -p vi} Pkgfile ;; [iI]) prt-get install "$name" ;; [uU]) pkgmk -uf && break;; *) echo "invalid option: '$REPLY'" >&2 continue ;; esac done && prt-get isinst "$name" && prt-get update "$name" } _revbump() { COMPREPLY=() local cur=${COMP_WORDS[COMP_CWORD]} local prev=${COMP_WORDS[COMP_CWORD-1]} local prt_get=prt-get [ -f /var/lib/pkg/prt-get.cache ] && prt_get=prt-cache case $COMP_CWORD in 1) COMPREPLY=($(compgen -W '$($prt_get list)' $cur)) ;; 2) COMPREPLY=($(compgen -W '$($prt_get info $prev 2>/dev/null |awk '"'"'/Version:/ {print $2}'"'"')' "$cur")) ;; esac } complete -F _revbump -o default revbump