diff options
Diffstat (limited to 'tools/make-updates')
-rwxr-xr-x | tools/make-updates | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/tools/make-updates b/tools/make-updates deleted file mode 100755 index aef0aafa..00000000 --- a/tools/make-updates +++ /dev/null @@ -1,125 +0,0 @@ -#!/bin/bash -e -# This is a tool to automatically generate and ship client updates. -# It is entirely self-contained, storing its own state in the git repo. -# It is called by running 'make updates' in server-data. -# It also supports manually calls for maintenance work. -# TODO: make auto-mode work with music too. - -# local branch to keep update info on -# will be created on first run; updated thereafter -branch=update-zips -# must already exist -# must NOT be a relative path -output=~/www/updates - -function apply_function() -{ - $1 misc-xml charcreation.xml ea-skills.xml effects.xml emotes.xml hair.xml paths.xml settings.xml skills.xml status-effects.xml units.xml - $1 emotes graphics/emotes/ - $1 images graphics/images/ - $1 items graphics/items/ - $1 minimaps graphics/minimaps/ - $1 particles graphics/particles/ - $1 skills graphics/skills/ - $1 sprites graphics/sprites/ - $1 tiles graphics/tiles/ - $1 item-xml items.xml - $1 map-xml maps.xml - $1 maps maps/ - $1 mob-xml monsters.xml - $1 npc-xml npcs.xml - $1 sfx sfx/ - $1 tsx tilesets/ -} - -function add_resource() -{ - pushd $output >/dev/null - adler32 $1 | tee -a resources2.txt | { - read name hash - chmod a+r $name - sed '/<\/updates>/i <update type="data" file="'$name'" hash="'$hash'" />' -i resources.xml - } - popd >/dev/null -} - -# TODO actually use this -function add_music() -{ - adler32 $1 | { - read name hash - chmod a+r $name - sed '/<\/updates>/i <update type="music" required="no" file="'$name'" hash="'$hash'" />' -i resources.xml - } -} - -function do_initial_zip() -{ - zip=$1-$this_update.zip; shift - git ls-files --with-tree=HEAD -- "$@" \ - | zip -q $output/$zip -@ - add_resource $zip -} - -function git_diff_tree() -{ - git diff-tree -r --diff-filter=AM "$@" -} - -function do_delta_zip() -{ - zip=$1-$last_update..$this_update.zip; shift - if git_diff_tree --quiet $last_update $this_update -- "$@" - then - return - fi - git_diff_tree --name-only $last_update $this_update -- "$@" \ - | zip -q $output/$zip -@ - add_resource $zip -} - -function do_initial_zips() -{ - apply_function do_initial_zip -} - -function do_delta_zips() -{ - apply_function do_delta_zip -} - -function main() -{ - if ! test -d $output - then - echo 'Fatal error: output directory does not exist' - echo "$output" - return 1 - fi - - this_update=$(git rev-parse --short HEAD) - if ! last_update=$(git rev-parse --short $branch 2>/dev/null) - then - echo 'Doing initial updates' - do_initial_zips - elif test "$this_update" = "$last_update" - then - echo 'No commits since last update generation ...' - else - echo 'Doing incremental updates' - do_delta_zips - fi - git branch -f $branch -} - -if test "$0" = "$BASH_SOURCE" -then - echo 'Generating updates automatically' - main -elif test "$0" = 'bash' -then - echo 'sourcing detected - you can do manual updates' -else - echo 'How did you get here?' - exit 3 -fi |