diff options
author | Dan McGee <dan@archlinux.org> | 2012-01-12 09:29:31 -0600 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2012-04-08 21:59:41 -0500 |
commit | fbcf9ea34112c4f32d2dc4807352fb1a82ba38fc (patch) | |
tree | b6e9ce74e26edf9a65329edc62e47b40872f06bf | |
parent | fee55210c6e8ed9a686ea892c2d9783e6f158e18 (diff) | |
download | pacman-fbcf9ea34112c4f32d2dc4807352fb1a82ba38fc.tar.gz pacman-fbcf9ea34112c4f32d2dc4807352fb1a82ba38fc.zip |
WIP: pkgdelta changeworking
-rw-r--r-- | scripts/pkgdelta.sh.in | 63 |
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: |