#!/bin/zsh MODS_DIR="${HOME}/World of Warcraft/Interface/AddOns" TMP_DIR="/tmp" EXTERNALS=0 list_file="$TMP_DIR/ace2_mods.txt" wget "http://www.wowace.com/files/descript.ion" --quiet -O "$list_file" if [[ $? -ne 0 ]]; then echo "error: could not download description file" exit 1 fi typeset -A ace2mods IFS=" " while read mod desc; do ace2mods[$mod]=$desc done < "$list_file" rm "$list_file" typeset -a localmods for mod in "$MODS_DIR/"*(/); do mod=${mod:t} if [[ -n $ace2mods[$mod] ]]; then localmods+=($mod) fi done for mod in $localmods[@]; do echo "$mod" rev_file="$TMP_DIR/rev.txt" wget "http://www.wowace.com/files/$mod/latest.txt" --quiet -O "$rev_file" || continue read rev < "$rev_file" rm "$rev_file" if [[ -e "$MODS_DIR/$mod/changelog-r$rev.txt" ]]; then continue fi echo " Downloading $mod-r$rev.zip" zipfile="$TMP_DIR/ace2_addon.zip" if [[ $EXTERNALS -eq 1 ]]; then url="http://www.wowace.com/files/$mod/$mod-r$rev.zip" else url="http://www.wowace.com/files/$mod/no-ext/$mod-r$rev.zip" fi wget "$url" --quiet -O "$zipfile" if [[ $? -ne 0 ]]; then echo " Download failed" continue fi mv "$MODS_DIR/$mod" "$MODS_DIR/$mod.bak" unzip -qq -d "$MODS_DIR" "$zipfile" res=$? rm "$zipfile" if [ $res -ne 0 ]; then echo " Unzip failed" mv "$MODS_DIR/$mod.bak" "$MODS_DIR/$mod" else echo " Updated $mod to revision $rev" rm -r "$MODS_DIR/$mod.bak" fi done