#!/bin/sh set -e [ $# = 2 ] || { echo >&2 "$0: wrong number of arguments"; exit 1; } src=$1 dst=$2 dirs_= dirs_music=music dirs_sound=sounds dirs_httt='Heir_To_The_Throne*' dirs_ei='Eastern_Invasion*' dirs_sotbe='Son_Of_The_Black_Eye*' dirs_tdh='The_Dark_Hordes*' dirs_trow='The_Rise_of_Wesnoth*' dirs_devel='tools wmlxgettext' dirs_editor='editor*' dirs_tutorial='tutorial Tutorial' dirs_mp=multiplayer dirs_locales=translations dirs_junk='scenario-test.cfg convert.pl README man' # must be last in $parts ! dirs_coredata='data images' parts="sound httt ei sotbe tdh trow devel editor tutorial mp junk coredata" if [ "x$dst" != "x--zip" ] then parts="music locales $parts" fi for p in $parts do [ "x$dst" = "x--zip" ] || rm -rf $dst/wesnoth-$p eval dirs=\${dirs_$p} findexpr=-false for d in $dirs do findexpr="$findexpr -o -name $d" done # locate files and dirs to move things=$(cd $src && find $findexpr) if [ "x$dst" = "x--zip" ] then rm -f $src/wesnoth-$p.zip (cd $src && zip -Drm wesnoth-$p.zip $things) else for d in $(cd $src && find $findexpr) do mkdir -p $dst/wesnoth-$p/$(dirname $d) mv $src/$d $dst/wesnoth-$p/$(dirname $d) done fi # be sure there are only dirs left now test -z "$(cd $src && find \( $findexpr \) -not -type d | tee /dev/stderr)" # remove now-empty dirs (cd $src && rm -rf $things) done