#!/bin/bash setglobal esh = $[readlink -f $BALLS_LIB/../bin/esh] proc render::esh { var view = ""$BALLS_VIEWS/$1"" var compiled = $[esh::compile $view] # source it in a subshell so it gets our variables shell { source "$compiled" } } proc esh::compile { var view = $1 var compiled_fname = ""$view.o"" if [[ ! -f "$compiled_fname" ]] || [[ "$view" -nt "$compiled_fname" ]] { $esh $view > $compiled_fname } echo $compiled_fname }