xrfragment/make

105 lines
3.2 KiB
Plaintext
Raw Normal View History

#!/bin/sh
2023-03-09 19:58:08 +01:00
set -e
try(){ set +e; "$@" 2>/dev/null; set -e; }
2023-11-09 11:24:30 +01:00
trace(){ set -x; "$@"; set +x; }
2023-03-09 19:58:08 +01:00
install(){
which haxe || {
2023-03-09 21:55:03 +01:00
echo -e "installing haxe..if this fails:\n\n"
2023-03-09 19:58:08 +01:00
echo " 1. install haxe from haxe.org"
echo "[2.] download neko for cpp output"
echo "[3.] install mono openjdk14 for csharp + java output"
2023-03-09 21:55:03 +01:00
which apt-get && {
2023-03-09 21:56:16 +01:00
sudo apt-get update -y
2023-03-09 22:00:32 +01:00
sudo apt-get install neko haxe -y
2023-03-09 21:55:03 +01:00
}
2023-03-09 19:58:08 +01:00
}
2023-03-09 22:11:56 +01:00
mkdir ~/.haxe
haxelib setup ~/.haxe
2023-03-09 19:58:08 +01:00
haxelib install hxcpp
haxelib install hxjava
haxelib install hxcs
haxelib install hscript
2023-08-04 09:11:26 +02:00
which javac && haxelib install hxjava 4.2.0
which mono && haxelib install hxcs 4.2.0
2023-03-09 19:58:08 +01:00
}
2023-03-17 16:06:24 +01:00
tests(){
{
2023-05-23 17:56:31 +02:00
which python3 && python3 test/generated/test.py src/spec/*.json | awk '{ print "py: "$0 } END{ print "\n"}'
which node && node test/generated/test.js src/spec/*.json | awk '{ print "js: "$0 } END{ print "\n"}'
2023-03-30 21:32:36 +02:00
} | awk '$2 ~ /src/ { $2=sprintf("%-30s",$2); print $0; next; } 1' | tee /tmp/log.txt
2023-03-30 20:08:17 +02:00
grep error /tmp/log.txt && exit 1 || exit 0
2023-03-09 19:58:08 +01:00
}
2023-03-30 15:44:29 +02:00
doc(){
2023-06-27 12:15:10 +02:00
set -x
awk -f doc/generate.awk src/xrfragment/URI.hx
read -p "press enter after copy/pasting into wiki" a
awk -f doc/generate.awk src/xrfragment/Parser.hx
read -p "press enter after copy/pasting into wiki" a
awk -f doc/generate.awk src/xrfragment/Query.hx
read -p "press enter after copy/pasting into wiki" a
2023-03-30 15:44:29 +02:00
}
2023-04-21 17:36:03 +02:00
server(){
2023-08-04 09:11:26 +02:00
dir=$(pwd)
cd /tmp
test -f redbean.com || wget https://redbean.dev/redbean-2.2.com -O redbean.com && chmod 755 redbean.com
test -f cert.pem || openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
2023-08-08 12:40:38 +02:00
./redbean.com -c 0 -C cert.pem -K key.pem -D $dir
2023-04-21 17:36:03 +02:00
}
2023-04-20 22:30:04 +02:00
build(){
2023-05-04 16:26:22 +02:00
2023-11-09 11:24:30 +01:00
parser(){
try rm dist/*
trace haxe build.hxml
ok=$?
sed -i 's|.*nonlocal .*||g' dist/xrfragment.py
ls -lah dist/*
exit
2023-11-09 11:24:30 +01:00
echo -e "[OK] parser build\n"
}
js(){
license_js="/*"
license_js="${license_js}\n * generated at $(date)"
license_js="${license_js}\n * https://xrfragment.org"
license_js="${license_js}\n * SPDX-License-Identifier: MPL-2.0"
license_js="${license_js}\n */\n"
2023-11-09 11:24:30 +01:00
# add js module
cat dist/xrfragment.js >> dist/xrfragment.module.js
2023-11-09 11:24:30 +01:00
echo "export default xrfragment;" >> dist/xrfragment.module.js
# add THREE
cat dist/xrfragment.js \
src/3rd/js/*.js \
src/3rd/js/three/*.js \
src/3rd/js/three/xrmacro/env.js \
src/3rd/js/three/xrf/*.js \
src/3rd/js/three/util/*.js \
2023-11-09 11:24:30 +01:00
src/3rd/js/three/xrf/dynamic/*.js \
src/3rd/js/three/xrf/src/*.js > dist/xrfragment.three.js
# add THREE module
cat dist/xrfragment.three.js > dist/xrfragment.three.module.js
echo "export default xrf;" >> dist/xrfragment.three.module.js
# add AFRAME
cat dist/xrfragment.three.js \
src/3rd/js/aframe/*.js > dist/xrfragment.aframe.js
# convert ESM to normal browser js
sed 's/export //g' example/assets/js/utils.js > dist/utils.js
# add license headers
#for i in dist/*.js; do echo -e "${license_js}$(cat $i)" > $i; done
2023-11-09 11:24:30 +01:00
ls -la dist | grep js
exit $ok
}
test -z $1 && { parser && js; }
test -z $1 || "$@"
2023-04-20 22:30:04 +02:00
}
test -z $1 && build
2023-03-09 19:58:08 +01:00
test -z $1 || "$@"