summaryrefslogtreecommitdiffstats
path: root/a
diff options
context:
space:
mode:
authorFlorian Pritz <f-p@gmx.at>2009-02-22 21:56:40 +0100
committerFlorian Pritz <f-p@gmx.at>2009-02-22 21:56:40 +0100
commitb5485475de82ac0743c37e3eb0c35e877f7213ff (patch)
tree23c4a52507a34ece514889b4888d627ec0e38a5c /a
parent1978be4439657a04d2e23227f5c66bb7d4124c18 (diff)
downloadbin-b5485475de82ac0743c37e3eb0c35e877f7213ff.tar.gz
bin-b5485475de82ac0743c37e3eb0c35e877f7213ff.tar.xz
updated
Diffstat (limited to 'a')
-rwxr-xr-xa108
1 files changed, 108 insertions, 0 deletions
diff --git a/a b/a
new file mode 100755
index 0000000..998fe6e
--- /dev/null
+++ b/a
@@ -0,0 +1,108 @@
+#!/bin/bash
+######################################################
+#+ Simple archive script with multiple backends
+#+ Rev. 3 - 2/07/09 - optimum.reflex@gmail.com
+######################################################
+hlp () { # Help function
+ echo "usage: $0 [--help] [archive] [sources]"
+ echo "[sources] is the files or folder you want added to the archive."
+ echo
+ echo "[archive] is the name of the archive generated, including extension."
+ echo "Extensions are: .7z .zip .bz2 .gz .lzma .tar.*"
+ exit 0
+}
+
+if [ $# -lt 2 ]; then # Need atleast an archive and one source
+ hlp
+fi
+
+tarfunc () { # function that does the work
+ MSG="packing [$SRCD] to [$DIR/$TAR]... "
+ case "$TAR" in
+ *.7z )
+ echo -n $MSG
+ /usr/bin/7z a -mx=9 $DIR/$TAR $SRC
+ ;;
+ *.t* )
+ echo -n $MSG
+ /bin/tar -acZf $DIR/$TAR $SRC
+ ;;
+ *.bz2 )
+ echo -n $MSG
+ /bin/bzip2 -cq9 $SRC > $DIR/$TAR
+ ;;
+ *.gz )
+ echo -n $MSG
+ /bin/gzip -cq9 $SRC > $DIR/$TAR
+ ;;
+ *.zip )
+ echo -n $MSG
+ /usr/bin/zip -qr9 $DIR/$TAR $SRC
+ ;;
+ *.lzma )
+ echo -n $MSG
+ /usr/bin/lzma -cq9 $SRC > $DIR/$TAR
+ ;;
+ *)
+ hlp;;
+ esac
+}
+
+tdir () { # Determin target directory for archive
+ if [ -d $1 ]; then
+ if [ "$1" == "." ]; then
+ DIR="$PWD"
+ else
+ DIR="$1"
+ fi
+ else
+ DIR="$PWD"
+ fi
+}
+
+case "$@" in
+ *--help*) hlp;;
+esac
+
+TAR="`basename $1`"
+tdir `dirname $1` && shift
+
+if [ $# -gt 1 ]; then # If more than one source
+ SRCD="$@" # all sources to $SRCD
+ i=0 # counter
+ while [ "$1" ]; do
+ if [ $i -eq 0 ]; then # only if the first source
+ SRC="$1" && shift
+ if [ ! -r "$SRC" ]; then
+ echo "Location [$SRC] does not exist or is unreadable."
+ exit 1
+ fi
+ ((i++)) # increment
+ else # if sources after the first
+ if [ ! -r "$1" ]; then
+ echo "Location [$1] does not exist or is unreadable."
+ exit 1
+ fi
+ SRC="$SRC $1" && shift # copy current $SRC and append next source
+ fi
+ done
+ tarfunc # do the work
+else # else if there is only one source
+ SRC="$1"
+ SRCD="$SRC" # copy $SRC
+ if [ ! -r "$SRC" ]; then
+ echo "Location [$SRC] does not exist or is unreadable."; exit 1
+ elif [ -d "$SRC" ]; then # if source is a directory
+ cd `dirname $SRC` # goto the directory one up from $SRC
+ SRC="`basename $SRC`/" # change $SRC for correct directory packing structure
+ fi
+ tarfunc # do the work
+fi
+
+if [ $? -ne 0 ]; then # if last command failed
+ cd $DIR
+ rm -f $TAR && echo "failure detected, archive deleted."
+ exit 1
+else
+ echo "success!"; exit 0
+fi