X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Farchival%2Funpack.sh;h=5a882cfc258191579cd7c48ff05870fdae001002;hb=8cae6bcb0a4c8962c18d50f7323558dddf299b2f;hp=1389d1e7a59c0a33145f8a503b42dee35b64f5c8;hpb=3a3dfeffb6b31a73b64d181964fcc85748259929;p=feisty_meow.git diff --git a/scripts/archival/unpack.sh b/scripts/archival/unpack.sh index 1389d1e7..5a882cfc 100644 --- a/scripts/archival/unpack.sh +++ b/scripts/archival/unpack.sh @@ -11,7 +11,7 @@ ############## # # An arbitrary format archive unpacker, although really we are mainly supporting -# tar and zip currently, including compressed formats. +# tar, zip, 7z, and rar at this time. archive_file="$1"; shift if [ -z "$archive_file" ]; then @@ -30,7 +30,7 @@ if [ -z "$unpack_dir" ]; then fi if [ ! -d "$unpack_dir" ]; then - mkdir "$unpack_dir" + mkdir -p "$unpack_dir" if [ $? -ne 0 ]; then echo "Could not create the unpacking directory: $unpack_dir" exit 1 @@ -52,6 +52,13 @@ if [ ! -f "$archive_file" ]; then fi fi +#hmmm: we could log to a file and spew the file if there's a failure, then +# remove the file after spewing or after successful run. +# this is a really commonly repeated pattern that would be nice to support +# in general. + +# record what happened. +save_err=1 if [[ "$archive_file" =~ .*\.tar$ \ || "$archive_file" =~ .*\.tar\.gz$ \ || "$archive_file" =~ .*\.tar\.bz2$ \ @@ -62,6 +69,7 @@ if [[ "$archive_file" =~ .*\.tar$ \ || "$archive_file" =~ .*\.snarf$ \ ]]; then tar -xf "$archive_file" &>/dev/null + save_err=$? elif [[ "$archive_file" =~ .*\.zip$ \ || "$archive_file" =~ .*\.epub$ \ || "$archive_file" =~ .*\.odt$ \ @@ -69,8 +77,14 @@ elif [[ "$archive_file" =~ .*\.zip$ \ || "$archive_file" =~ .*\.war$ \ ]]; then unzip "$archive_file" &>/dev/null + save_err=$? +elif [[ "$archive_file" =~ .*\.7z$ ]]; then + 7z x "$archive_file" &>/dev/null + save_err=$? +elif [[ "$archive_file" =~ .*\.rar$ ]]; then + rar x "$archive_file" &>/dev/null + save_err=$? fi -save_err=$? popd &>/dev/null