#!/bin/sh

ROOT=`dirname "$0"`
VERSION=`node -e "var fs = require('fs'); var p = JSON.parse(fs.readFileSync('./package.json')); console.log(p.version)"`
TYPE=""

output="$1.js"
minoutput="$1.min.js"
if [ -z "$SLIM" ]; then
    # Listed in order of dependency
    files="object.js lib.js nodes.js runtime.js lexer.js parser.js transformer.js
       compiler.js filters.js globals.js loader.js web-loaders.js loaders.js
       environment.js"
else
    # Listed in order of dependency
    files="object.js lib.js runtime.js loader.js web-loaders.js loaders.js filters.js 
       globals.js environment.js"
    TYPE="(slim, only works with precompiled templates)"
fi

rm -f "$output"

echo "// Browser bundle of nunjucks $VERSION $TYPE\n" >> "$output"
echo "(function() {" >> "$output"
echo "var modules = {};" >> "$output"

for file in $files; do
    name=${file%%.*}
    echo "(function() {" >> "$output"
    cat "src/$file" | \
        perl -ne 's/^(.*)require\(\W*([\w-]*)\W*\)(.*)$/$1modules["$2"]$3/; print' | \
        sed -e "s/module.exports/modules['$name']/" \
        >> "$output"
    echo "})();" >> "$output"
done

echo "var nunjucks;" >> $output

cat index.js | \
    perl -ne 's/require\(\W*\.\/src\/([\w-]*)\W*\)/modules["$1"]/; print' | \
    sed -e 's/module.exports/nunjucks/' \
    >> "$output"

echo "
nunjucks.require = function(name) { return modules[name]; };

if(typeof define === 'function' && define.amd) {
    define(function() { return nunjucks; });
}
else {
    window.nunjucks = nunjucks;
    if(typeof module !== 'undefined') module.exports = nunjucks;
}
" >> "$output"

echo "})();" >> "$output"

echo "// Browser bundle of nunjucks $VERSION $TYPE\n" > "$minoutput"
./node_modules/.bin/uglifyjs "$output" >> "$minoutput"
