diff --git a/Makefile b/Makefile index 6479bc27af5617c58bdb9f2362414f2717c57384..f63274c3b6a8681d233fa96ba90dc2fe7bb22bac 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ merge_xsl: merge_js: for f in ${BUILDFILELIST} ; do source "$$f" ; done ; \ - misc/merge_js.sh $${MODULE_DEPENDENCIES[*]} + BUILD_JS_DIST_BUNDLE=$${BUILD_JS_DIST_BUNDLE} misc/merge_js.sh $${MODULE_DEPENDENCIES[*]} EXCLUDE_EXPR = %~ %.backup BUILDFILELIST = $(filter-out $(EXCLUDE_EXPR),$(wildcard build.properties.d/*)) diff --git a/misc/merge_js.sh b/misc/merge_js.sh index c24ac6e246de49b2459175ceef97dae8224fd016..d1b70a4fa9403eb11945ae4f547e10d7c4771494 100755 --- a/misc/merge_js.sh +++ b/misc/merge_js.sh @@ -33,11 +33,44 @@ CORE_MODULES=$@ -SOURCE_DIR=public/js/ -TARGET=public/webcaosdb.dist.js +PUBLIC_JS_DIR=public/js/ +DIST_BUNDLE=webcaosdb.dist.js +DIST_BUNDLE_TARGET=public/${DIST_BUNDLE} JSHEADER_TARGET=public/xsl/jsheader.xsl +ALL_SOURCES=() _create_jsheader () { + _JS_INCLUDE= + if [ "$BUILD_JS_DIST_BUNDLE" == "TRUE" ] ; then + _SIZE=$(( $(wc -c ${DIST_BUNDLE_TARGET} | awk '{print $1}')/1024)) + echo "including ${DIST_BUNDLE} (${_SIZE}kB) into ${JSHEADER_TARGET}" + _JS_INCLUDE=" + <xsl:element name=\"script\"> + <xsl:attribute name=\"src\"> + <xsl:value-of select=\"concat(\$basepath,'webinterface/\${BUILD_NUMBER}/${DIST_BUNDLE}')\"/> + </xsl:attribute> + </xsl:element> + " + sed -i "s|^\(.*JS_INCLUDE.*\)$| <script src=\"${DIST_BUNDLE}\"><\/script>\n\1|g" public/index.html ; + else + _ALL_SOURCES=$@ + echo "${_ALL_SOURCES}" + for _SOURCE in ${_ALL_SOURCES[@]} ; do + _SIZE=$(( $(wc -c ${_SOURCE} | awk '{print $1}')/1024)) + _SOURCE=js/${_SOURCE/${PUBLIC_JS_DIR}/} + echo "including ${_SOURCE} (${_SIZE}kB) into ${JSHEADER_TARGET}" + _JS_INCLUDE="${_JS_INCLUDE} + <xsl:element name=\"script\"> + <xsl:attribute name=\"src\"> + <xsl:value-of select=\"concat(\$basepath,'webinterface/\${BUILD_NUMBER}/${_SOURCE}')\"/> + </xsl:attribute> + </xsl:element> + " + sed -i "s|^\(.*JS_INCLUDE.*\)$| <script src=\"${_SOURCE}\"><\/script>\n\1|g" public/index.html ; + done + fi + + echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <!-- THIS FILE IS AUTO-GENERATED BY THE merge_js.sh SCRIPT --> <xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"> @@ -46,16 +79,15 @@ _create_jsheader () { <script> window.sessionStorage.caosdbBasePath = \"<xsl:value-of select=\"\$basepath\"/>\"; </script> - <xsl:element name=\"script\"> - <xsl:attribute name=\"src\"> - <xsl:value-of select=\"concat(\$basepath,'webinterface/\${BUILD_NUMBER}/webcaosdb.dist.js')\"/> - </xsl:attribute> - </xsl:element> + ${_JS_INCLUDE} </xsl:template> </xsl:stylesheet>" > ${JSHEADER_TARGET} } function _merge () { + if [ "$BUILD_JS_DIST_BUNDLE" != "TRUE" ] ; then + return 0 + fi _SOURCE=$2 _TARGET=$3 @@ -70,21 +102,24 @@ function _merge () { } # clean up old -rm $TARGET || true -touch $TARGET +rm $DIST_BUNDLE_TARGET || true +touch $DIST_BUNDLE_TARGET for _SOURCE in ${CORE_MODULES[@]} ; do - _merge "core" "${SOURCE_DIR}${_SOURCE}" $TARGET + [[ ! " ${ALL_SOURCES[@]} " =~ " ${_SOURCE} " ]] && ALL_SOURCES+=(${PUBLIC_JS_DIR}${_SOURCE}) + _merge "core" "${PUBLIC_JS_DIR}${_SOURCE}" $DIST_BUNDLE_TARGET done # load other js files but exclude any subdirectory -for _SOURCE in $(find ${SOURCE_DIR}* -prune -iname "*.js") ; do - _merge "extension" ${_SOURCE} $TARGET +for _SOURCE in $(find ${PUBLIC_JS_DIR}* -prune -iname "*.js") ; do + [[ ! " ${ALL_SOURCES[@]} " =~ " ${_SOURCE} " ]] && ALL_SOURCES+=(${_SOURCE}) + _merge "extension" ${_SOURCE} $DIST_BUNDLE_TARGET done # for `make test` -for _SOURCE in $(find ${SOURCE_DIR} -ipath "${SOURCE_DIR}modules/*.js") ; do - _merge "extension" ${_SOURCE} $TARGET +for _SOURCE in $(find ${PUBLIC_JS_DIR} -ipath "${PUBLIC_JS_DIR}modules/*.js") ; do + [[ ! " ${ALL_SOURCES[@]} " =~ " ${_SOURCE} " ]] && ALL_SOURCES+=(${_SOURCE}) + _merge "extension" ${_SOURCE} $DIST_BUNDLE_TARGET done -_create_jsheader +_create_jsheader ${ALL_SOURCES[@]} diff --git a/test/core/index.html b/test/core/index.html index 834684b2e737be2e5f241eed3faaea73b3c4020c..0dfea85580fe64d0f7a4676f1d919ec5662dee09 100644 --- a/test/core/index.html +++ b/test/core/index.html @@ -35,6 +35,6 @@ <script> var _caosdb_modules_auto_init = false; </script> - <script src="webcaosdb.dist.js"></script> + <!--JS_INCLUDE--> </body> </html>