prepfiles
#!/bin/sh
basename=remixml
stripdebug='/^[ ]*\/\/ DEBUG_START/,/^[ ]*\/\/ DEBUG_END/ d'
stripcomments='/^[ ]*\/\// d'
sed -e '/ Cut BEGIN for externs/,/ Cut END for externs/ d' \
-e '/ Cut BEGIN for prepend/,/ Cut END for prepend/ d' \
<$basename.master.js >$basename.meat.tmp
sed -e '/ Cut BEGIN for externs/,/ Cut END for externs/ !d' \
-e '/ Cut [BE]/ d' <$basename.master.js >externs.tmp
sed -e '/ Cut BEGIN for prepend/,/ Cut END for prepend/ !d' \
-e 's/^ *//g' -e 's%/\*.*\*/%%g' \
-e '/ Cut [BE]/ d' <$basename.master.js >$basename.prep.tmp
( sed -e '/ Cut END delete/,$ d' \
-e '/ Cut [BE]/ d' <$basename.meat.tmp
echo ""
sed -e 's/^/ /' $basename.prep.tmp
sed -e '/ Cut END delete/,$ !d' \
-e '/ Cut [BE]/ d' <$basename.meat.tmp
) >$basename.js
google-closure-compiler \
--strict_mode_input --assume_function_wrapper \
--compilation_level ADVANCED \
--language_in ECMASCRIPT_NEXT \
--language_out ECMASCRIPT_2018 \
--use_types_for_optimization \
--rewrite_polyfills=false \
--source_map_format V3 \
--source_map_include_content \
--externs externs.h \
--externs externs.tmp \
--warning_level VERBOSE \
--create_source_map $basename.js.map \
-D DEBUG=0 \
--js_output_file $basename.min.tmp \
$basename.meat.tmp &&
( echo '(function(){"use strict";'
cat $basename.prep.tmp $basename.min.tmp
echo '}).call(this);'
) >$basename.min.js