aboutsummaryrefslogtreecommitdiff
path: root/bin/test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/test.sh')
-rw-r--r--bin/test.sh62
1 files changed, 62 insertions, 0 deletions
diff --git a/bin/test.sh b/bin/test.sh
new file mode 100644
index 0000000..d5c28b1
--- /dev/null
+++ b/bin/test.sh
@@ -0,0 +1,62 @@
+#/bin/bash
+set -eu
+
+library_dir() {
+ echo "lib/$1"
+}
+
+library_out_dir() {
+ echo "node_modules/$1"
+}
+
+clone_dep() {
+ local dir=$(library_dir "$1")
+ local tag="$2"
+ local url="$3"
+
+ if [ ! -d "$dir" ] ; then
+ mkdir -p lib
+ git clone --depth=1 --branch="$tag" "$url" "$dir"
+ fi
+}
+
+compile_library() {
+ local name="$1"
+ echo "Compiling $name"
+
+ shift
+ local lib_flags=()
+ for dep in "$@"; do
+ lib_flags+=("--lib=$(library_out_dir $dep)")
+ done
+
+ local dir=$(library_dir "$name")
+ local src="$dir/src"
+ local test="$dir/test"
+ local out=$(library_out_dir "$name")
+ rm -rf out
+
+ gleam compile-package \
+ --name "$name" \
+ --target javascript \
+ --src "$src" \
+ --out $(library_out_dir "$name") \
+ "${lib_flags[@]: }"
+
+ cp "$src/"*.js "$out/"
+}
+
+clone_dep gleam_stdlib main https://github.com/gleam-lang/stdlib.git
+compile_library gleam_stdlib
+
+rm -rf node_modules/gleam_javascript
+gleam compile-package \
+ --name gleam_javascript \
+ --target javascript \
+ --src src \
+ --test test \
+ --out node_modules/gleam_javascript \
+ --lib node_modules/gleam_stdlib
+cp "src/"*.js "node_modules/gleam_javascript/"
+
+node bin/run-tests.js