#!/bin/sh program=${0##*/} do_show() { awk -F= '$1 == "pkgrel" { print $2 }' "$@" } do_set() { sed -e "/^pkgrel=/s/=.*/=${setto:-0}/" \ -i "$@" } do_add () { local f= old= for f in "$@"; do [ -n "$only_clean_git" ] \ && [ -n "$(git diff --name-only $f)" ] \ && continue [ -d "$f" ] && f="$f/APKBUILD" old=$(do_show "$f") setto=$(($old + 1)) do_set "$f" || return 1 done } do_verify() { [ -n "$force" ] && return 0 local f= rc=0 for f in "$@"; do [ -d "$f" ] && f="$f/APKBUILD" if ! grep -q '^pkgrel=[0-9]' "$f"; then echo "$f: Has no proper pkgrel" >&2 rc=1 fi done return $rc } do_nothing() { return 0 } do_usage() { cat <<__EOF__ Usage: $program -a|-h|-s NUM|-t|-z [-f] FILE... Commands: -a Add 1 to current pkgrel -g Only do the change on files that have clean git status -h Show this help -s Set pkgrel to NUM -t Only verify that files are in proper format -z Set pkgrel to 0 Options: -f Force, even if given files are not in proper format __EOF__ } cmd=do_show force= while getopts "afghs:tz" opt; do case $opt in a) cmd=do_add;; g) only_clean_git=1;; f) force=1;; h) cmd=do_usage;; s) setto=$OPTARG; cmd=do_set;; t) cmd=do_nothing;; z) setto=0; cmd=do_set;; esac done shift $(( $OPTIND - 1)) if [ $# -eq 0 ]; then do_usage exit 1 fi do_verify "$@" || exit 1 $cmd "$@"