BUILD_DIR = path('build')
SRC_DIRS = [ path('src')/d for d in ('Y', 'ezl', 'tanks') ]
DATA_DIR = path('data')
+TAGS = None
+GIT_VERSION = sh("git show --oneline . | head -n1 | cut -d ' ' -f 1", capture=True).strip()
def commonjs(*args, **kw):
if v is not True: kwargs.append(str(v))
return sh('commonjs %s' % ' '.join( SRC_DIRS + kwargs + list(args)), capture=capture)
+def sourceTags(tags=None):
+ global TAGS
+ if tags is not None:
+ TAGS = tags
+ elif TAGS is None:
+ with path('build/deps.html').open('rU') as f:
+ TAGS = f.read()
+ return TAGS
@task
def build_data():
- "Convert all yaml files to json"
+ "Converts all data files and core injects config."
info('Building data files...')
for dirpath, dirs, files in os.walk(DATA_DIR):
indir = path(dirpath)
@task
def build_scripts():
- "Builds js modules"
+ "Builds js modules."
info('Building scripts...')
sh('rm build/tanks/config.js')
- tags = commonjs(script_tags=True, capture=True)
- with path('www/deps.html').open('w') as f:
+ tags = sourceTags( commonjs(script_tags=True, capture=True) )
+ with path('build/deps.html').open('w') as f:
f.write(tags)
@task
+def update_version():
+ "Updates dependency file and build version file."
+ tags = sourceTags()
+ info('Build Version: {}'.format(GIT_VERSION))
+ with path('build/versioned-deps.html').open('w') as f:
+ f.write(tags.replace('src="build/', 'src="build/{}/'.format(GIT_VERSION)))
+ with path('build/versioned-build.html').open('w') as f:
+ f.write('<script>BUILD="build/{}";</script>\n'.format(GIT_VERSION))
+
+@task
+def build_version():
+ "Displays build version only (use -q to suppress paver garbage)."
+ print GIT_VERSION
+
+@task
+@needs('update_version')
@needs('build_data')
@needs('build_scripts')
def build():
"Builds the Tanks project"
pass
-
@task
def clean():
"Cleans dep cache and build files"
commonjs(clean=True)
build()
+
default = build
+++ /dev/null
-<script src="build/require.js" type="text/javascript"></script>
-<script src="build/future.js" type="text/javascript"></script>
-<script src="build/functional/to-function.js" type="text/javascript"></script>
-<script src="build/Y/type.js" type="text/javascript"></script>
-<script src="build/Y/internal.js" type="text/javascript"></script>
-<script src="build/Y/core.js" type="text/javascript"></script>
-<script src="build/Y/delegate.js" type="text/javascript"></script>
-<script src="build/Y/types/function.js" type="text/javascript"></script>
-<script src="build/Y/op.js" type="text/javascript"></script>
-<script src="build/Y/utils.js" type="text/javascript"></script>
-<script src="build/Y/class.js" type="text/javascript"></script>
-<script src="build/Y/y.js" type="text/javascript"></script>
-<script src="build/Y/types/collection.js" type="text/javascript"></script>
-<script src="build/Y/types/array.js" type="text/javascript"></script>
-<script src="build/Y/types/object.js" type="text/javascript"></script>
-<script src="build/Y/types/string.js" type="text/javascript"></script>
-<script src="build/Y/types/number.js" type="text/javascript"></script>
-<script src="build/Y.js" type="text/javascript"></script>
-<script src="build/jquery.js" type="text/javascript"></script>
-<script src="build/jquery.sparkline.js" type="text/javascript"></script>
-<script src="build/Y/modules/y.event.js" type="text/javascript"></script>
-<script src="build/ezl/util.js" type="text/javascript"></script>
-<script src="build/ezl/layer.js" type="text/javascript"></script>
-<script src="build/ezl/loop/fps.js" type="text/javascript"></script>
-<script src="build/ezl/math/vec.js" type="text/javascript"></script>
-<script src="build/ezl/loop/cooldown.js" type="text/javascript"></script>
-<script src="build/ezl/loop/eventloop.js" type="text/javascript"></script>
-<script src="build/evt.js" type="text/javascript"></script>
-<script src="build/ezl/loc/loc.js" type="text/javascript"></script>
-<script src="build/ezl/math/line.js" type="text/javascript"></script>
-<script src="build/ezl/math/rect.js" type="text/javascript"></script>
-<script src="build/ezl/math.js" type="text/javascript"></script>
-<script src="build/ezl/loc/boundingbox.js" type="text/javascript"></script>
-<script src="build/ezl/loop/fx.js" type="text/javascript"></script>
-<script src="build/ezl/layer/layer.js" type="text/javascript"></script>
-<script src="build/ezl/loop.js" type="text/javascript"></script>
-<script src="build/ezl/loc/square.js" type="text/javascript"></script>
-<script src="build/ezl/loc.js" type="text/javascript"></script>
-<script src="build/ezl/widget/cooldown.js" type="text/javascript"></script>
-<script src="build/ezl/shape/shape.js" type="text/javascript"></script>
-<script src="build/ezl/shape/line.js" type="text/javascript"></script>
-<script src="build/ezl/shape/polygon.js" type="text/javascript"></script>
-<script src="build/ezl/widget.js" type="text/javascript"></script>
-<script src="build/ezl/shape/rect.js" type="text/javascript"></script>
-<script src="build/ezl/shape/circle.js" type="text/javascript"></script>
-<script src="build/ezl/shape.js" type="text/javascript"></script>
-<script src="build/ezl.js" type="text/javascript"></script>
-<script src="build/tanks/globals.js" type="text/javascript"></script>
-<script src="build/jquery.hotkeys.js" type="text/javascript"></script>
-<script src="build/jquery.masonry.js" type="text/javascript"></script>
-<script src="build/Y/modules/y.kv.js" type="text/javascript"></script>
-<script src="build/ezl/util/tree/binaryheap.js" type="text/javascript"></script>
-<script src="build/tanks/constants.js" type="text/javascript"></script>
-<script src="build/ezl/util/tree/quadtree.js" type="text/javascript"></script>
-<script src="build/Y/modules/y.scaffold.js" type="text/javascript"></script>
-<script src="build/Y/modules/y.config.js" type="text/javascript"></script>
-<script src="build/tanks/effects/stat.js" type="text/javascript"></script>
-<script src="build/tanks/map/map.js" type="text/javascript"></script>
-<script src="build/tanks/map/traversal.js" type="text/javascript"></script>
-<script src="build/Y/modules/y.cookies.js" type="text/javascript"></script>
-<script src="build/ezl/util/data/datafile.js" type="text/javascript"></script>
-<script src="build/ezl/util/data/loader.js" type="text/javascript"></script>
-<script src="build/tanks/mixins/speciated.js" type="text/javascript"></script>
-<script src="build/tanks/mixins/meronomic.js" type="text/javascript"></script>
-<script src="build/tanks/config.js" type="text/javascript"></script>
-<script src="build/tanks/ui/configui.js" type="text/javascript"></script>
-<script src="build/tanks/mixins/quantified.js" type="text/javascript"></script>
-<script src="build/tanks/thing/thing.js" type="text/javascript"></script>
-<script src="build/tanks/effects/buff.js" type="text/javascript"></script>
-<script src="build/tanks/map/trajectory.js" type="text/javascript"></script>
-<script src="build/tanks/effects.js" type="text/javascript"></script>
-<script src="build/tanks/thing/item.js" type="text/javascript"></script>
-<script src="build/tanks/thing/wall.js" type="text/javascript"></script>
-<script src="build/tanks/ui/grid.js" type="text/javascript"></script>
-<script src="build/tanks/fx/explosion.js" type="text/javascript"></script>
-<script src="build/tanks/thing/bullet.js" type="text/javascript"></script>
-<script src="build/tanks/map/pathmap.js" type="text/javascript"></script>
-<script src="build/tanks/mixins/inventoried.js" type="text/javascript"></script>
-<script src="build/tanks/fx.js" type="text/javascript"></script>
-<script src="build/tanks/thing/tank.js" type="text/javascript"></script>
-<script src="build/tanks/ui/pathmapui.js" type="text/javascript"></script>
-<script src="build/tanks/mixins.js" type="text/javascript"></script>
-<script src="build/tanks/thing/player.js" type="text/javascript"></script>
-<script src="build/tanks/map/level.js" type="text/javascript"></script>
-<script src="build/tanks/thing.js" type="text/javascript"></script>
-<script src="build/tanks/map.js" type="text/javascript"></script>
-<script src="build/tanks/game.js" type="text/javascript"></script>
-<script src="build/tanks/ui/main.js" type="text/javascript"></script>
-<script src="build/tanks/ui.js" type="text/javascript"></script>
-<script src="build/tanks.js" type="text/javascript"></script>