wesnoth/utils/splittree

65 lines
1.4 KiB
Bash
Executable File

#!/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