#!/bin/bash #/ Usage: script/clone-example-repos #/ #/ Clone some example repositories for smoke testing parsing and assignment #/ #/ NOTES: #/ - This script is intended to be called by `test/Examples.hs` #/ - Go and Ruby examples are in submodules #/ - PHP doesn't have any parse-examples #/ - Java and Haskell have good examples, but they have assignment failures so currently aren't tested set -e cd $(dirname "$0")/.. mkdir -p test/examplerepos || true git clone --single-branch --recurse-submodules https://github.com/tree-sitter/haskell-tree-sitter.git tmp/haskell-tree-sitter || true dir="tmp/haskell-tree-sitter" # clone_repo LOCAL_PATH URL SHA function clone_repo { path=$1 url="https://github.com/$2" sha=$3 if [ ! -d "$path" ]; then echo "Cloning $url@$sha" git clone "$url" "$path" else echo "$url@$sha already exists" fi pushd "$path" > /dev/null # && git pull -q # NB: Enable this if you need to pin to a different sha for one of the repos. git reset --hard -q $sha popd > /dev/null } python_examples="$dir/tree-sitter-python/vendor/tree-sitter-python/examples" clone_repo "$python_examples/numpy" numpy/numpy 058851c5cfc98f50f11237b1c13d77cfd1f40475 clone_repo "$python_examples/thealgorithms" thealgorithms/python c6be53e1c43f870f5364eef1499ee1b411c966fb clone_repo "$python_examples/flask" pallets/flask 0b5b4a66ef99c8b91569dd9b9b34911834689d3f clone_repo "$python_examples/httpie" jakubroztocil/httpie 358342d1c915d6462a080a77aefbb20166d0bd5d clone_repo "$python_examples/keras" keras-team/keras e59570ae26670f788d6c649191031e4a8824f955 clone_repo "$python_examples/requests" requests/requests 64bde6582d9b49e9345d9b8df16aaa26dc372d13 clone_repo "$python_examples/scikit-learn" scikit-learn/scikit-learn d0f63a760d9993a7f68cfc5e1a075700d67c53d3 clone_repo "$python_examples/scrapy" scrapy/scrapy 65d631329a1434ec013f24341e4b8520241aec70 clone_repo "$python_examples/pytorch" pytorch/pytorch c865d46736db4afff51690a712e35ed8e3899490 clone_repo "$python_examples/certbot" certbot/certbot bb8222200a8cbd39a3ce9584ce6dfed6c5d05228 ts_examples="$dir/tree-sitter-typescript/vendor/tree-sitter-typescript/examples" clone_repo "$ts_examples/desktop" desktop/desktop d1324f56d02dd9afca5d2e9da545905a7d41d671 clone_repo "$ts_examples/npm" npm/npm ee147fbbca6f2707d3b16f4fa78f4c4606b2d9b1 # Java examples are disabled because the assignment code is not yet # robust and for reasons of CI celerity. java_examples="$dir/tree-sitter-java/vendor/tree-sitter-java/examples" # clone_repo "$java_examples/elasticsearch" elastic/elasticsearch 4d62640bf116af7e825d89c7319a39c3f2f325b4 # clone_repo "$java_examples/guava" google/guava e24fddc5fff7fd36d33ea38737b6606a7e476845 # clone_repo "$java_examples/RxJava" ReactiveX/RxJava 8a6bf14fc9a61f7c1c0016ca217be02ca86211d2 haskell_examples="$dir/tree-sitter-haskell/vendor/tree-sitter-haskell/examples" # clone_repo "$haskell_examples/effects" joshvera/effects 08f5f36f2600362685af593f4b327e933b60bf97 # clone_repo "$haskell_examples/postgrest" PostgRest/postgrest f80cfbf165f951a062b3cbedac4556019905ca49 # clone_repo "$haskell_examples/ivory" GaloisInc/ivory 3d00324ad1c113c7e70957ff6a6d636d271d0fc4 go_examples="$dir/tree-sitter-go/vendor/tree-sitter-go/examples" clone_repo "$go_examples/go" "golang/go" "870e12d7bfaea70fb0d743842f5864eb059cb939" clone_repo "$go_examples/moby" "moby/moby" "f57f260b49b6142366e6bc1274204ee0a1205945" ruby_examples="$dir/tree-sitter-ruby/vendor/tree-sitter-ruby/examples" clone_repo "$ruby_examples/ruby_spec" "ruby/spec" "c3e6b9017926f44a76e2b966c4dd35fa84c4cd3b"