summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-01-12 09:29:31 -0600
committerDan McGee <dan@archlinux.org>2012-04-08 21:59:41 -0500
commitfbcf9ea34112c4f32d2dc4807352fb1a82ba38fc (patch)
treeb6e9ce74e26edf9a65329edc62e47b40872f06bf
parentfee55210c6e8ed9a686ea892c2d9783e6f158e18 (diff)
downloadpacman-fbcf9ea34112c4f32d2dc4807352fb1a82ba38fc.tar.gz
pacman-fbcf9ea34112c4f32d2dc4807352fb1a82ba38fc.zip
WIP: pkgdelta changeworking
-rw-r--r--scripts/pkgdelta.sh.in63
1 files changed, 43 insertions, 20 deletions
diff --git a/scripts/pkgdelta.sh.in b/scripts/pkgdelta.sh.in
index 992c85f3..a85470af 100644
--- a/scripts/pkgdelta.sh.in
+++ b/scripts/pkgdelta.sh.in
@@ -21,6 +21,7 @@
# bash options
set -o errexit
+shopt -s extglob
# gettext initialization
export TEXTDOMAIN='pacman-scripts'
@@ -29,6 +30,8 @@ export TEXTDOMAINDIR='@localedir@'
declare -r myver='@PACKAGE_VERSION@'
QUIET=0
+RATIO=""
+SIZE=""
# ensure we have a sane umask set
umask 0022
@@ -38,10 +41,16 @@ m4_include(library/output_format.sh)
# print usage instructions
usage() {
printf "pkgdelta (pacman) %s\n\n" "$myver"
- printf -- "$(gettext "Usage: pkgdelta [-q] <package1> <package2>\n")"
+ printf -- "$(gettext "Usage: pkgdelta [-q] <package1> <package2>")\n\n"
printf -- "$(gettext "\
- pkgdelta will create a delta file between two packages.\n\
-This delta file can then be added to a database using repo-add.\n\n")"
+pkgdelta will create a delta file between two packages.\n\
+This delta file can then be added to a database using repo-add.\n")"
+ printf "\n"
+ printf -- "$(gettext "Options:\n")"
+ printf -- "$(gettext " -q, --quiet minimize output")\n"
+ printf -- "$(gettext " -r, --ratio <ratio> create only if delta/package2 size is below given ratio")\n"
+ printf -- "$(gettext " -s, --size <size> create only if package2 is larger than size")\n"
+ printf "\n"
printf -- "$(gettext "Example: pkgdelta pacman-3.0.0.pkg.tar.gz pacman-3.0.1.pkg.tar.gz")\n"
}
@@ -123,32 +132,46 @@ create_xdelta()
return 0
}
-case "$1" in
- -h|--help) usage; exit 0 ;;
- -V|--version) version; exit 0 ;;
- -q|--quiet) QUIET=1; shift ;;
-esac
-
-if (( $# != 2 )); then
+declare -a args
+while (( $# )); do
+ case "$1" in
+ -h|--help) usage; exit 0 ;;
+ -V|--version) version; exit 0 ;;
+ -q|--quiet) QUIET=1 ;;
+ -r|--ratio)
+ shift
+ RATIO="$1"
+ if [[ $RATIO != *([0-9])?(.*([0-9])) ]]; then
+ printf "invalid ratio\n"
+ exit 1
+ elif (( $RATIO > 1.0 || $RATIO < 0.0 )); then
+ printf "invalid ratio\n"
+ exit 1
+ fi
+ ;;
+ -s|--size) shift; SIZE="$1" ;;
+ *) args+=("$1") ;;
+ esac
+ shift
+done
+
+if (( ${#args[@]} != 2 )); then
usage
exit 1
fi
-if [[ ! -f $1 ]]; then
- error "$(gettext "File '%s' does not exist")" "$1"
- exit 1
-fi
-
-if [[ ! -f $2 ]]; then
- error "$(gettext "File '%s' does not exist")" "$2"
- exit 1
-fi
+for pkg in ${args[@]}; do
+ if [[ ! -f $pkg ]]; then
+ error "$(gettext "File '%s' does not exist")" "$pkg"
+ exit 1
+ fi
+done
if ! type xdelta3 &>/dev/null; then
error "$(gettext "Cannot find the xdelta3 binary! Is xdelta3 installed?")"
exit 1
fi
-create_xdelta "$1" "$2"
+create_xdelta "${args[0]}" "${args[1]}"
# vim: set ts=2 sw=2 noet: