aboutsummaryrefslogtreecommitdiff
path: root/bin/test.sh
blob: dbf6fa2f99dfc1f945742a43e905d922e3e9bc70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#/bin/bash
set -eu

library_dir() {
  echo "_build/deps/$1"
}

project_dir() {
  echo "_build/lib/$1"
}

clone_dep() {
  local dir=$(library_dir "$1")
  local tag="$2"
  local url="$3"

  if [ ! -d "$dir" ] ; then
    mkdir -p "$dir"
    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=$(project_dir $dep)")
  done

  local dir=$(library_dir "$name")
  local src="$dir/src"
  local out=$(project_dir "$name")


  if [ ! -d "$out" ] ; then
    gleam compile-package \
      --name "$name" \
      --target javascript \
      --src "$src" \
      --out $(project_dir "$name") \
      "${lib_flags[@]: }"
    cp "$src/"*.js "$out/"
  fi
}

clone_dep gleam_stdlib main https://github.com/gleam-lang/stdlib.git
compile_library gleam_stdlib

rm -rf $(project_dir gleam_javascript)
gleam compile-package \
  --name gleam_javascript \
  --target javascript \
  --src src \
  --test test \
  --out $(project_dir gleam_javascript) \
  --lib $(project_dir gleam_stdlib)
cp "src/"*.js $(project_dir gleam_javascript)/

node bin/run-tests.js