summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--apkgrel.in75
2 files changed, 76 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 1270b22..20049e1 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@ LUA_VERSION = 5.1
LUA_SHAREDIR ?= $(prefix)/share/lua/$(LUA_VERSION)/
SCRIPTS := abuild devbuild buildrepo abuild-keygen \
- abuild-sign newapkbuild abump ap
+ abuild-sign newapkbuild abump apkgrel ap
USR_BIN_FILES := $(SCRIPTS) abuild-tar
SAMPLES := sample.APKBUILD sample.initd sample.confd \
sample.pre-install sample.post-install
diff --git a/apkgrel.in b/apkgrel.in
new file mode 100644
index 0000000..b07f8bd
--- /dev/null
+++ b/apkgrel.in
@@ -0,0 +1,75 @@
+#!/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
+ old=$(do_show "$f")
+ setto=$(($old + 1))
+ do_set "$f" || return 1
+ done
+}
+
+do_verify() {
+ [ -n "$force" ] && return 0
+ if ! grep -q '^pkgrel=[0-9]' "$@"; then
+ echo "The following files does not have proper pkgrel:" >&2
+ grep -L '^pkgrel=[0-9]' "$@" >&2
+ return 1
+ fi
+ return 0
+}
+
+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
+ -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 "afhs:tz" opt; do
+ case $opt in
+ a) cmd=do_add;;
+ 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 "$@"
+