X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Ffiles%2Fzip_directories.sh;h=5a603b4dd6dcdc147975e2e518f3df3e93c7e037;hb=86731240bf17a61dbf29b78ec64d84f2e6052d57;hp=9b5daed437275add6838c25382149038618a86f6;hpb=0fde3c23ef41308e9fe25fc390b467f8e51bc0ce;p=feisty_meow.git diff --git a/scripts/files/zip_directories.sh b/scripts/files/zip_directories.sh index 9b5daed4..5a603b4d 100644 --- a/scripts/files/zip_directories.sh +++ b/scripts/files/zip_directories.sh @@ -5,18 +5,39 @@ source $FEISTY_MEOW_SCRIPTS/core/functions.sh -#hmmm: take a dir parameter to go to for this. -dir=. +dirs=() +# snag the command line arguments into an array of names. +for i in "$@"; do dirs+=("$i"); done + +# if there were no arguments, use the current directories list of directories. +if [ ${#dirs[@]} -eq 0 ]; then + # using a temp file is clumsy but after a lot of different methods being tried, this one + # worked and wasn't super ugly. + tempfile="$(mktemp /tmp/dirlist.XXXXXX)" + find $dir -mindepth 1 -maxdepth 1 -type d -exec echo "dirs+=(\"{}\");" ';' >$tempfile + source "$tempfile" +#echo dirs default to: ${dirs[@]} + \rm -f $tempfile +fi + +# takes a directory name as an argument and sucks the directory +# into a timestamped zip file. function flattenizer() { - while read dirname; do - if [ ! -z "$dirname" ]; then - echo "flattening dir name is '$dirname'..." - zip -rm "${dirname}_$(date_stringer)" "$dirname" &>/dev/null + for dirname in "$@"; do + while [[ $dirname =~ .*/$ ]]; do + dirname="${dirname:0:((${#dirname}-1))}" + done + if [ ! -z "$dirname" -a -d "$dirname" ]; then + echo "flattening '$dirname'..." + zip -rm "${dirname}_$(date_stringer).zip" "$dirname" &>/dev/null fi done } -find $dir -mindepth 1 -maxdepth 1 -type d | flattenizer +for ((i=0; i < ${#dirs[@]}; i++)); do + dir="${dirs[i]}" + flattenizer "$dir" +done