X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Ffiles%2Fzip_directories.sh;h=5a603b4dd6dcdc147975e2e518f3df3e93c7e037;hb=86731240bf17a61dbf29b78ec64d84f2e6052d57;hp=c3aee86046861d19cd2e1f84d993ffaa84a15ae5;hpb=41b65df6ac9256cb090601b43acd8a2c6b84dccf;p=feisty_meow.git diff --git a/scripts/files/zip_directories.sh b/scripts/files/zip_directories.sh index c3aee860..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 directory '$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