changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > infra / annotate scripts/ts-install-langs.sh

changeset 38: 197d061b1f2e
parent: 4e73da2d9c63
child: 9211d38aca7e
author: ellis <ellis@rwest.io>
date: Sat, 30 Dec 2023 23:45:41 -0500
permissions: -rwxr-xr-x
description: 2
24
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
1
 #!/usr/bin/env bash
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
2
 
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
3
 # based on https://github.com/GrammaTech/sel/blob/master/tools/tree-sitter-install.sh
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
4
 set -eux
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
5
 
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
6
 declare -ar default_langs=(
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
7
   commonlisp bash c cpp css go html java javascript jsdoc json python regex rust
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
8
   typescript/tsx typescript/typescript yaml
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
9
 ) # more langs: agda c-sharp julia ocaml/interface ocaml/ocaml php ql ruby scala
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
10
 
38
ellis <ellis@rwest.io>
parents: 30
diff changeset
11
 TARGETDIR=${1:-build/src/ts-langs}
24
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
12
 PREFIX=${PREFIX:-/usr/local}
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
13
 CC=${CC:-clang}
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
14
 CXX=${CXX:-clang++}
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
15
 if [ $(uname) == "Darwin" ];then
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
16
    EXT=dylib;
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
17
 else
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
18
    EXT=so
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
19
 fi
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
20
 # Declared repositories.
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
21
 declare -A repos
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
22
 repos[commonlisp]=https://github.com/theHamsta/tree-sitter-commonlisp.git
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
23
 repos[yaml]=https://github.com/ikatyang/tree-sitter-yaml.git
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
24
 repos[cpp]=https://github.com/ruricolist/tree-sitter-cpp.git
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
25
 
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
26
 declare -a langs
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
27
 if [ -z "${2:-}" ]; then
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
28
   langs=(${default_langs[@]})
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
29
 else
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
30
   langs=($@)
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
31
 fi
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
32
 
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
33
 mkdir -pv $TARGETDIR
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
34
 pushd $TARGETDIR
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
35
 for lang in "${langs[@]}";do
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
36
   [ -d "tree-sitter-${lang%/*}" ] || git clone ${repos[$lang]:-https://github.com/tree-sitter/tree-sitter-${lang%/*}};
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
37
   # subshell
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
38
   (
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
39
     cd "tree-sitter-${lang}/src";
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
40
     if test -f "scanner.cc"; then
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
41
       ${CXX} -I. -fPIC scanner.cc -c -lstdc++;
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
42
       ${CC} -I. -std=c99 -fPIC parser.c -c;
30
4e73da2d9c63 added virt/build-demo.sh
ellis <ellis@rwest.io>
parents: 24
diff changeset
43
       ${CXX} -shared scanner.o parser.o -o ${PREFIX}/lib/libtree-sitter-"${lang//\//-}.${EXT}";
24
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
44
     elif test -f "scanner.c"; then
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
45
       ${CC} -I. -std=c99 -fPIC scanner.c -c;
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
46
       ${CC} -I. -std=c99 -fPIC parser.c -c;
30
4e73da2d9c63 added virt/build-demo.sh
ellis <ellis@rwest.io>
parents: 24
diff changeset
47
       ${CC} -shared scanner.o parser.o -o ${PREFIX}/lib/libtree-sitter-"${lang//\//-}.${EXT}";
24
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
48
     else
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
49
       ${CC} -I. -std=c99 -fPIC parser.c -c;
30
4e73da2d9c63 added virt/build-demo.sh
ellis <ellis@rwest.io>
parents: 24
diff changeset
50
       ${CC} -shared parser.o -o ${PREFIX}/lib/libtree-sitter-"${lang//\//-}.${EXT}";
24
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
51
     fi;
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
52
     mkdir -p "${PREFIX}/share/tree-sitter/${lang}/";
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
53
     cp grammar.json node-types.json "${PREFIX}/share/tree-sitter/${lang}";
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
54
   )
3e8310575574 added cargo-tools and ts-langs
ellis <ellis@rwest.io>
parents:
diff changeset
55
 done