Hello community,

here is the log from the commit of package duply for openSUSE:Factory checked 
in at 2014-07-12 17:14:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/duply (Old)
 and      /work/SRC/openSUSE:Factory/.duply.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "duply"

Changes:
--------
--- /work/SRC/openSUSE:Factory/duply/duply.changes      2014-02-02 
07:50:37.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.duply.new/duply.changes 2014-07-12 
17:14:50.000000000 +0200
@@ -1,0 +2,27 @@
+Wed Jul  9 14:54:52 UTC 2014 - [email protected]
+
+- Update to version 1.7.4:
+  + remove ubuntu one support, service is discontinued
+  + featreq 31: add authenticated swift (contributed by Justus Seifert)
+- Update to version 1.7.3:
+  + bugfix: test routines, gpg2 asked for passphrase although GPG_PW was set
+- Update to version 1.7.2:
+  + bugfix: debian Bug#743190 "duply no longer allows restoration without 
+    gpg passphrase in conf file"
+    GPG_AGENT_INFO env var is now needed to trigger --use-agent
+  + bugfix: gpg keyenc test routines didn't work if GPG_PW was not set
+- Update to version 1.7.1:
+  + bugfix: purge-* commands renamed to purgeFull, purgeIncr due to 
+    incompatibility with new minus batch separator 
+- Update to version 1.7.0:
+  + disabled gpg key id plausibility check, too many valid possibilities
+  + featreq 7 "Halt if precondition fails":
+    added and(+), or(-) batch command(separator) support
+  + featreq 26 "pre/post script with shebang line": 
+    if a script is flagged executable it's executed in a subshell 
+    now as opposed to sourced to bash, which is the default
+  + bugfix: do not check if dpbx, swift credentials are set anymore 
+  + bugfix: properly escape profile name, archdir if used as arguments
+  + add DUPL_PRECMD conf setting for use with e.g. trickle
+
+-------------------------------------------------------------------

Old:
----
  duply_1.6.0.tgz

New:
----
  duply_1.7.4.tgz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ duply.spec ++++++
--- /var/tmp/diff_new_pack.gDiYn2/_old  2014-07-12 17:14:51.000000000 +0200
+++ /var/tmp/diff_new_pack.gDiYn2/_new  2014-07-12 17:14:51.000000000 +0200
@@ -18,13 +18,13 @@
 
 
 Name:           duply
-Version:        1.6.0
+Version:        1.7.4
 Release:        0
 Summary:        A frontend for the mighty duplicity magic
 License:        GPL-2.0
 Group:          Productivity/Archiving/Compression
 Url:            http://duply.net/
-Source0:        
http://surfnet.dl.sourceforge.net/project/ftplicity/duply%20%28simple%20duplicity%29/1.6.x/duply_1.6.0.tgz
+Source0:        
http://downloads.sourceforge.net/ftplicity/duply%20%28simple%20duplicity%29/1.7.x/%{name}_%{version}.tgz
 Requires:       duplicity
 BuildArch:      noarch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ duply_1.6.0.tgz -> duply_1.7.4.tgz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duply_1.6.0/duply new/duply_1.7.4/duply
--- old/duply_1.6.0/duply       2014-01-04 18:34:51.000000000 +0100
+++ new/duply_1.7.4/duply       2014-06-24 20:55:59.000000000 +0200
@@ -9,7 +9,7 @@
 #  changed from ftplicity to duply.                                           #
 #  See http://duply.net or http://ftplicity.sourceforge.net/ for more info.   #
 #  (c) 2006 Christiane Ruetten, Heise Zeitschriften Verlag, Germany           #
-#  (c) 2008-2012 Edgar Soldin (changes since version 1.3)                     #
+#  (c) 2008-2014 Edgar Soldin (changes since version 1.3)                     #
 ###############################################################################
 #  LICENSE:                                                                   #
 #  This program is licensed under GPLv2.                                      #
@@ -30,13 +30,38 @@
 #  - add 'exclude_<command>' list usage eg. exclude_verify
 #  - featreq 25: a download/install duplicity option
 #  - hint on install software if a piece is missing
-#  - featreq 5: Prevent concurrent runs for same profile
-#  - featreq 7: check success of commands and react in batches 
-#    e.g. backup_AND_verify_AND_purge, pre_and_bkp_and_post
 #  - import/export profile from/to .tgz function !!!
 #
 #
 #  CHANGELOG:
+#  1.7.4 (24.6.2014)
+#  - remove ubuntu one support, service is discontinued
+#  - featreq 31: add authenticated swift (contributed by Justus Seifert)
+#
+#  1.7.3 (3.4.2014)
+#  - bugfix: test routines, gpg2 asked for passphrase although GPG_PW was set
+#
+#  1.7.2 (1.4.2014 "April,April")
+#  - bugfix: debian Bug#743190 "duply no longer allows restoration without 
+#     gpg passphrase in conf file"
+#     GPG_AGENT_INFO env var is now needed to trigger --use-agent
+#  - bugfix: gpg keyenc test routines didn't work if GPG_PW was not set
+#
+#  1.7.1 (30.3.2014)
+#  - bugfix: purge-* commands renamed to purgeFull, purgeIncr due to 
+#     incompatibility with new minus batch separator 
+#
+#  1.7.0 (20.3.2014)
+#  - disabled gpg key id plausibility check, too many valid possibilities
+#  - featreq 7 "Halt if precondition fails":
+#     added and(+), or(-) batch command(separator) support
+#  - featreq 26 "pre/post script with shebang line": 
+#     if a script is flagged executable it's executed in a subshell 
+#     now as opposed to sourced to bash, which is the default
+#  - bugfix: do not check if dpbx, swift credentials are set anymore 
+#  - bugfix: properly escape profile name, archdir if used as arguments
+#  - add DUPL_PRECMD conf setting for use with e.g. trickle
+#
 #  1.6.0 (1.1.2014)
 #  - support gs backend
 #  - support dropbox backend
@@ -324,7 +349,7 @@
 ME_LONG="$0"
 ME="$(basename $0)"
 ME_NAME="${ME%%.*}"
-ME_VERSION="1.6.0"
+ME_VERSION="1.7.4"
 ME_WEBSITE="http://duply.net";
 
 # default config values
@@ -431,7 +456,10 @@
     $ME <profile> create
 
   general usage in single or batch mode (see EXAMPLES):  
-    $ME <profile> <command>[_<command>_...] [<options> ...]
+    $ME <profile> <command>[[_|+|-]<command>[_|+|-]...] [<options> ...]
+
+  For batches the conditional separators can also be written as pseudo commands
+  and(+), or(-). See SEPARATORS for details.
 
   Non $ME options are passed on to duplicity (see OPTIONS).
   All conf parameters can also be defined in the environment instead.
@@ -456,9 +484,23 @@
 
   example 2:   $ME ~/.${ME_NAME}/humbug backup
 
+SEPARATORS:
+  _ (underscore)  
+             neutral separator
+  + (plus sign), _and_  
+             conditional AND
+             the next command will only be executed if the previous succeeded
+  - (minus sign), _or_  
+             conditional OR
+             the next command will only be executed if the previous failed
+
+   example:  
+    'pre_and_bkp_or_verify_post' translates to 'pre+bkp-verify_post
+
 COMMANDS:
   usage      get usage help text
 
+  and/or     pseudo commands for better batch cmd readability (see SEPARATORS)
   create     creates a configuration profile
   backup     backup with pre/post script execution (batch: pre_bkp_post),
               full (if full_if_older matches or no earlier backup is found)
@@ -478,12 +520,12 @@
   purge [<max_age>] [--force]  
              list outdated backup files (older than \$MAX_AGE)
               [use --force to actually delete these files]
-  purge-full [<max_full_backups>] [--force]  
+  purgeFull [<max_full_backups>] [--force]  
              list outdated backup files (\$MAX_FULL_BACKUPS being the number of
              full backups and associated incrementals to keep, counting in 
              reverse chronological order)
               [use --force to actually delete these files]
-  purge-incr [<max_fulls_with_incrs>] [--force]  
+  purgeIncr [<max_fulls_with_incrs>] [--force]  
              list outdated incremental backups (\$MAX_FULLS_WITH_INCRS being 
              the number of full backups which associated incrementals will be
              kept, counting in reverse chronological order) 
@@ -629,15 +671,14 @@
 #   s3+http://[user:password@]bucket_name[/prefix]
 #   # scp and sftp are aliases for the ssh backend
 #   ssh://user[:password]@other.host[:port]/[/]some_dir
+#   # for authenticated swift define TARGET_USER or SWIFT_USERNAME,
+#   # TARGET_PASS or SWIFT_PASSWORD, SWIFT_AUTHURL (mandatory, the path to 
+#   # your identity service, omitting leads to an error with swift),
+#   # optionally SWIFT_AUTHVERSION (which defaults to "1")
 #   swift://container_name
 #   tahoe://alias/directory
-#   # for Ubuntu One set TARGET_PASS to oauth access token
-#   #   "consumer_key:consumer_secret:token:token_secret"
-#   # if non given credentials will be prompted for and one will be created
-#   u1://host_is_ignored/volume_path
-#   u1+http:///volume_path
 #   webdav[s]://user[:password]@other.host/some_dir
-# ATTENTION: characters other than A-Za-z0-9.-_.~ in user,password,path have 
+# ATTENTION: characters other than A-Za-z0-9.-_.~ in the URL have 
 #            to be replaced by their url encoded pendants, see
 #            http://en.wikipedia.org/wiki/Url_encoding 
 #            if you define the credentials as TARGET_USER, TARGET_PASS below 
@@ -651,6 +692,11 @@
 # base directory to backup
 SOURCE='${DEFAULT_SOURCE}'
 
+# a command that runs duplicity e.g. 
+#  shape bandwidth use via trickle
+#  "trickle -s -u 640 -d 5120" # 5Mb up, 40Mb down"
+#DUPL_PRECMD=""
+
 # exclude folders containing exclusion file (since duplicity 0.5.14)
 # Uncomment the following two lines to enable this setting.
 #FILENAME='.duplicity-ignore'
@@ -896,10 +942,16 @@
   local ERR=0
   local SCRIPT="$1"
   if [ ! -z "$PREVIEW" ] ; then        
-    echo $SCRIPT
+    echo "$([ ! -x "$SCRIPT" ] && echo ". ")$SCRIPT"
   elif [ -r "$SCRIPT" ] ; then 
     echo -n "Running '$SCRIPT' "
-    OUT=`. "$SCRIPT" 2>&1`; ERR=$?
+    if [ -x "$SCRIPT" ]; then
+      OUT=$("$SCRIPT" 2>&1)
+      ERR=$?
+    else
+      OUT=$(. "$SCRIPT" 2>&1)
+      ERR=$?
+    fi
     [ $ERR -eq "0" ] && echo "- OK" || echo "- FAILED (code $ERR)"
     echo -en ${OUT:+"Output: $OUT\n"} ;
   else
@@ -968,9 +1020,9 @@
   if duplicity_version_ge 601; then
     local DUPL_ARCHDIR=''
     if var_isset 'ARCH_DIR'; then
-      DUPL_ARCHDIR="--archive-dir '${ARCH_DIR}'"
+      DUPL_ARCHDIR="--archive-dir $(qw "${ARCH_DIR}")"
     fi
-      DUPL_ARCHDIR="${DUPL_ARCHDIR} --name 'duply_${NAME}'"
+    DUPL_ARCHDIR="${DUPL_ARCHDIR} --name $(qw "duply_${NAME}")"
   fi
 
 DUPL_PARAMS_GLOBAL="${DUPL_ARCHDIR} ${DUPL_PARAM_ENC} \
@@ -1016,7 +1068,7 @@
 
   var_isset 'PREVIEW' && local RUN=echo || local RUN=eval
 $RUN ${DUPL_VARS_GLOBAL} ${BACKEND_PARAMS} \
- duplicity $DUPL_CMD $DUPL_PARAMS_GLOBAL $(duplicity_params_conf)\
+ ${DUPL_PRECMD} duplicity $DUPL_CMD $DUPL_PARAMS_GLOBAL 
$(duplicity_params_conf)\
  $GPG_USEAGENT $DUPL_CMD_PARAMS ${PREVIEW:+}
 
   local ERR=$?
@@ -1302,7 +1354,7 @@
   var_isset GPG_USEAGENT && exit 1
   
   if ( [ -n "$1" ] && var_isset "$1" ) || ( [ -n "$2" ] && var_isset "$2" ); 
then
-    echo "--passphrase-fd 0"
+    echo "--passphrase-fd 0 --batch"
   fi
 }
 
@@ -1321,6 +1373,20 @@
   return 1
 }
 
+# checks if gpg-agent is available, returns error code
+# 0 on success
+# 1 if GPG_AGENT_INFO is not set
+# 2 if GPG_AGENT_INFO is stale
+function gpg_agent_avail {
+  local ERR=1
+  if var_isset GPG_AGENT_INFO; then
+    ps -p $(echo $GPG_AGENT_INFO|awk -F: '{print $2}') > /dev/null 2>&1  &&\
+    ERR=0 || ERR=2
+  fi
+  
+  return $ERR
+}
+
 # start of script 
#######################################################################
 
 # confidentiality first, all we create is only readable by us
@@ -1549,8 +1615,7 @@
   # ok here some exceptions:
   #   protocols that do not need passwords
   #   s3[+http] only needs password for write operations
-  #   u1[+http] can ask for creds and create an oauth token
-  if [ -n "$(tolower "${TARGET_URL_PROT}" | grep -e 
'^\(file\|tahoe\|ssh\|scp\|sftp\|u1\(\+http\)\?\)://$')" ]; then
+  if [ -n "$( tolower "${TARGET_URL_PROT}" | grep -e 
'^\(dpbx\|file\|tahoe\|ssh\|scp\|sftp\|swift\)://$' )" ]; then
     : # all is well file/tahoe do not need passwords, ssh might use key auth
   elif [ -n "$(tolower "${TARGET_URL_PROT}" | grep -e '^s3\(\+http\)\?://$')" 
] && \
      [ -z "$(echo ${cmds} | grep -e '\(bkp\|incr\|full\|purge\|cleanup\)')" ]; 
then
@@ -1606,15 +1671,16 @@
 '$CONF'."
 fi
 
-# check gpg keys format
-for KEY_SET_NAME in GPG_KEY GPG_KEYS_ENC $(gpg_signing && echo -n 
GPG_KEY_SIGN); do
-  eval KEY_SET="\${${KEY_SET_NAME}}"
-  for KEY_ID in $(gpg_split_keyset "$KEY_SET"); do
-    # test format [ ! $(echo $GPG_KEY | grep '^[0-9a-fA-F]\{8\}$') ] not set 
correct (8 digit ID) or
-    gpg_key_format ${KEY_ID} || \
-      error_gpg "GPG key '${KEY_ID}' set in '${KEY_SET_NAME}' is not \na valid 
8 character hex digit string e.g. '012345AB'."
-  done
-done
+# disabled as keys can really be given in too many forms e.g. short/long id, 
fingerprint, email, name ...
+## check gpg keys format
+#for KEY_SET_NAME in GPG_KEY GPG_KEYS_ENC $(gpg_signing && echo -n 
GPG_KEY_SIGN); do
+#  eval KEY_SET="\${${KEY_SET_NAME}}"
+#  for KEY_ID in $(gpg_split_keyset "$KEY_SET"); do
+#    # test format [ ! $(echo $GPG_KEY | grep '^[0-9a-fA-F]\{8\}$') ] not set 
correct (8 digit ID) or
+#    gpg_key_format ${KEY_ID} || \
+#      error_gpg "GPG key '${KEY_ID}' set in '${KEY_SET_NAME}' is not \na 
valid 8 character hex digit string e.g. '012345AB'."
+#  done
+#done
 
 # create enc gpg keys array, for further processing
 GPG_KEYS_ENC=( $(gpg_split_keyset ${GPG_KEY}) $(gpg_split_keyset 
${GPG_KEYS_ENC}) )
@@ -1638,7 +1704,7 @@
 # try first key, if one set
 elif ! var_isset 'GPG_KEY_SIGN'; then
   KEY_ID=${GPG_KEYS_ENC[0]}
-  if ! gpg_key_format "${KEY_ID}"; then
+  if [ -z "${KEY_ID}" ]; then
     echo "Signing disabled. Not GPG_KEY entries in config."
     GPG_KEY_SIGN='disabled'
   else  
@@ -1698,9 +1764,16 @@
 if ! gpg_symmetric && \
    ( ! var_isset GPG_PW || \
      ( gpg_signing && ! var_isset GPG_PW_SIGN && [ "$GPG_KEY_SIGN" != 
"${GPG_KEYS_ENC[0]}" ] ) ); then
-  echo "Autoenable use of gpg-agent. GPG_PW or GPG_PW_SIGN (enc != sign key) 
not set."
 
-  GPG_USEAGENT="--use-agent"
+  GPG_AGENT_ERR=$(gpg_agent_avail ; echo $?)
+  if [ "$GPG_AGENT_ERR" -eq 1 ]; then
+    echo "Cannot use gpg-agent. GPG_AGENT_INFO not set."
+  elif [ "$GPG_AGENT_ERR" -eq 2 ]; then
+    echo "Cannot use gpg-agent! GPG_AGENT_INFO contains stale pid."
+  else
+    echo "Autoenable use of gpg-agent. GPG_PW or GPG_PW_SIGN (enc != sign key) 
not set."
+    GPG_USEAGENT="--use-agent"
+  fi
 fi
 
 # end GPG config plausibility check2 
@@ -1764,7 +1837,7 @@
   done
   # check encrypting
   CMD_MSG="Test - Encrypt to $(gpg_join_keyset 
${GPG_KEYS_ENC[@]})${CMD_MSG_SIGN:+ & $CMD_MSG_SIGN}"
-  run_cmd $(gpg_pass_pipein GPG_PW_SIGN GPG_PW) $GPG $CMD_PARAM_SIGN 
$(gpg_param_passwd GPG_PW_SIGN GPG_PW) $CMD_PARAMS $GPG_USEAGENT --batch 
--status-fd 1 $GPG_OPTS -o "${GPG_TEST}_ENC" -e "$ME_LONG"
+  run_cmd $(gpg_pass_pipein GPG_PW_SIGN GPG_PW) $GPG $CMD_PARAM_SIGN 
$(gpg_param_passwd GPG_PW_SIGN GPG_PW) $CMD_PARAMS $GPG_USEAGENT --status-fd 1 
$GPG_OPTS -o "${GPG_TEST}_ENC" -e "$ME_LONG"
 
   if [ "$CMD_ERR" != "0" ]; then 
     KEY_NOTRUST=$(echo "$CMD_OUT"|awk '/^\[GNUPG:\] INV_RECP 10/ { print $4 }')
@@ -1777,7 +1850,7 @@
   # check decrypting
   CMD_MSG="Test - Decrypt"
   gpg_key_decryptable || CMD_DISABLED="No matching secret key or GPG_PW not 
set."
-  run_cmd $(gpg_pass_pipein GPG_PW) "$GPG" $(gpg_param_passwd GPG_PW) 
$GPG_OPTS -o "${GPG_TEST}_DEC" $GPG_USEAGENT --batch -d "${GPG_TEST}_ENC"
+  run_cmd $(gpg_pass_pipein GPG_PW) "$GPG" $(gpg_param_passwd GPG_PW) 
$GPG_OPTS -o "${GPG_TEST}_DEC" $GPG_USEAGENT -d "${GPG_TEST}_ENC"
 
   if [ "$CMD_ERR" != "0" ]; then 
     error_gpg_test "Decryption failed.${CMD_OUT:+\n$CMD_OUT}"
@@ -1861,9 +1934,27 @@
       BACKEND_PARAMS="$BACKEND_PARAMS CLOUDFILES_AUTHURL=$(qw 
"${CLOUDFILES_AUTHURL}")"
     fi
     ;;
-  'file'|'tahoe'|'dpbx'|'swift')
-    BACKEND_URL="${TARGET_URL_PROT}${TARGET_URL_HOSTPATH}"
-    ;;
+   'file'|'tahoe'|'dpbx')
+     BACKEND_URL="${TARGET_URL_PROT}${TARGET_URL_HOSTPATH}"
+     ;;
+   'swift')
+     BACKEND_URL="${TARGET_URL_PROT}${TARGET_URL_HOSTPATH}"
+     # respect possibly set swift env vars
+     var_isset 'SWIFT_USERNAME' && TARGET_URL_USER="$SWIFT_USERNAME"
+     var_isset 'SWIFT_PASSWORD' && TARGET_URL_PASS="$SWIFT_PASSWORD"
+     # add them to duplicity params like with cloudfile to make it look 
standardized
+     var_isset 'TARGET_URL_USER' && \
+       BACKEND_PARAMS="$BACKEND_PARAMS SWIFT_USERNAME=$(qw 
"${TARGET_URL_USER}")"
+     var_isset 'SWIFT_AUTHURL' && \
+       BACKEND_PARAMS="$BACKEND_PARAMS SWIFT_AUTHURL=$(qw "${SWIFT_AUTHURL}")"
+     ( var_isset 'TARGET_URL_USER' && ! var_isset 'SWIFT_AUTHURL' ) &&\
+       warning "\
+Swift will probably fail because the conf var SWIFT_AUTHURL was not defined!"
+     var_isset 'SWIFT_AUTHVERSION' && \
+       BACKEND_PARAMS="$BACKEND_PARAMS SWIFT_AUTHVERSION=$(qw 
"${SWIFT_AUTHVERSION}")"
+     var_isset 'TARGET_URL_PASS' && \
+       BACKEND_PARAMS="$BACKEND_PARAMS SWIFT_PASSWORD=$(qw 
"${TARGET_URL_PASS}")"
+     ;;
   'rsync')
     # everything in url (this backend does not support pass in env var)
     # this is obsolete from version 0.6.10 (buggy), hopefully fixed in 0.6.11
@@ -1913,6 +2004,8 @@
 BACKEND_URL="$BACKEND_URL"
 EXCLUDE="$EXCLUDE"
 
+# replace magic separators to condition command equivalents (+=and,-=or)
+cmds=$(awk -v cmds="$cmds" "BEGIN{ gsub(/\+/,\"_and_\",cmds); 
gsub(/\-/,\"_or_\",cmds); print cmds}")
 # convert cmds to array, lowercase for safety
 CMDS=( $(awk "BEGIN{ cmds=tolower(\"$cmds\"); gsub(/_/,\" \",cmds); print cmds 
}") )
 
@@ -1923,10 +2016,6 @@
 ## init
 # raise index in cmd array for pre/post param
 var_isset 'CMD_NO' && CMD_NO=$((++CMD_NO)) || CMD_NO=0
-# save start time
-RUN_START=$(date_fix %s)$(nsecs)
-# user info
-echo; separator "Start running command $(echo $cmd|awk '$0=toupper($0)') at 
$(date_from_nsecs $RUN_START)"
 
 # get prev/nextcmd vars
 nextno=$(($CMD_NO+1))
@@ -1934,8 +2023,29 @@
 prevno=$(($CMD_NO-1))
 [ "$prevno" -ge 0 ] && CMD_PREV=${CMDS[$prevno]} || CMD_PREV='START'
 
-case "$cmd" in
-  pre|post)
+# deal with condition "commands"
+if var_isset 'CMD_SKIP' && [ $CMD_SKIP -gt 0 ]; then
+  echo -e "\n--- Skipping command $(toupper $cmd) ! ---"
+  CMD_SKIP=$(($CMD_SKIP - 1))
+  continue
+elif [ "$cmd" == 'and' ] && [ "$CMD_ERR" -ne "0" ]; then
+  CMD_SKIP=1
+  continue
+elif [ "$cmd" == 'or' ] && [ "$CMD_ERR" -eq "0" ]; then
+  CMD_SKIP=1
+  continue
+elif [ "$cmd" == 'and' ] || [ "$cmd" == 'or' ]; then
+  unset 'CMD_SKIP';
+  continue
+fi
+
+# save start time
+RUN_START=$(date_fix %s)$(nsecs)
+# user info
+echo; separator "Start running command $(toupper $cmd) at $(date_from_nsecs 
$RUN_START)"
+
+case "$(tolower $cmd)" in
+  'pre'|'post')
     if [ "$cmd" == 'pre' ]; then
       script=$PRE
     else
@@ -1944,52 +2054,52 @@
     # script execution in a subshell, protect us from failures/var overwrites
     ( run_script "$script" )
     ;;
-  bkp)
+  'bkp')
     duplify -- "${dupl_opts[@]}" --exclude-globbing-filelist "$EXCLUDE" \
           "$SOURCE" "$BACKEND_URL"
     ;;
-  incr)
+  'incr')
     duplify incr -- "${dupl_opts[@]}" --exclude-globbing-filelist "$EXCLUDE" \
           "$SOURCE" "$BACKEND_URL"
     ;;
-  full)
+  'full')
     duplify full -- "${dupl_opts[@]}" --exclude-globbing-filelist "$EXCLUDE" \
           "$SOURCE" "$BACKEND_URL"
     ;;
-  verify)
+  'verify')
     duplify verify -- "${dupl_opts[@]}" --exclude-globbing-filelist "$EXCLUDE" 
\
           "$BACKEND_URL" "$SOURCE"
     ;;
-  list)
+  'list')
     # time param exists since 0.5.10+
     TIME="${ftpl_pars[0]:-now}"
     duplify list-current-files -- -t "$TIME" "${dupl_opts[@]}" "$BACKEND_URL"
     ;;
-  cleanup)
+  'cleanup')
     duplify cleanup -- "${dupl_opts[@]}" "$BACKEND_URL"
     ;;
-  purge)
+  'purge')
     MAX_AGE=${ftpl_pars[0]:-$MAX_AGE}
     [ -z "$MAX_AGE" ] && error "  Missing parameter <max_age>. Can be set in 
profile or as command line parameter."
     
     duplify remove-older-than "${MAX_AGE}" \
           -- "${dupl_opts[@]}" "$BACKEND_URL"
     ;;
-  purge-full)
+  'purgefull')
     MAX_FULL_BACKUPS=${ftpl_pars[0]:-$MAX_FULL_BACKUPS}
     [ -z "$MAX_FULL_BACKUPS" ] && error "  Missing parameter 
<max_full_backups>. Can be set in profile or as command line parameter."
   
     duplify remove-all-but-n-full "${MAX_FULL_BACKUPS}" \
           -- "${dupl_opts[@]}" "$BACKEND_URL"
     ;;
-  purge-incr)
+  'purgeincr')
     MAX_FULLS_WITH_INCRS=${ftpl_pars[0]:-$MAX_FULLS_WITH_INCRS}
     [ -z "$MAX_FULLS_WITH_INCRS" ] && error "  Missing parameter 
<max_fulls_with_incrs>. Can be set in profile or as command line parameter."
   
     duplify remove-all-inc-of-but-n-full "${MAX_FULLS_WITH_INCRS}" \
           -- "${dupl_opts[@]}" "$BACKEND_URL"
     ;;
-  restore)
+  'restore')
     OUT_PATH="${ftpl_pars[0]}"; TIME="${ftpl_pars[1]:-now}";
     [ -z "$OUT_PATH" ] && error "  Missing parameter target_path for restore.
   
@@ -1998,7 +2108,7 @@
     
     duplify  -- -t "$TIME" "${dupl_opts[@]}" "$BACKEND_URL" "$OUT_PATH"
     ;;
-  fetch)
+  'fetch')
     IN_PATH="${ftpl_pars[0]}"; OUT_PATH="${ftpl_pars[1]}"; 
     TIME="${ftpl_pars[2]:-now}";
     ( [ -z "$IN_PATH" ] || [ -z "$OUT_PATH" ] ) && error "  Missing parameter 
<src_path> or <target_path> for fetch.
@@ -2010,7 +2120,7 @@
     duplify -- --restore-time "$TIME" "${dupl_opts[@]}" \
               --file-to-restore "$IN_PATH" "$BACKEND_URL" "$OUT_PATH"
     ;;
-  status)
+  'status')
     duplify collection-status -- "${dupl_opts[@]}" "$BACKEND_URL"
     ;;    
   *)

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to