5 stable releases

1.3.0 Nov 21, 2024
1.2.1 Sep 7, 2024
1.2.0 Sep 6, 2024
1.1.0 Sep 4, 2024
1.0.0 Sep 1, 2024

#274 in Build Utils

Download history 129/week @ 2024-08-26 272/week @ 2024-09-02 26/week @ 2024-09-16 11/week @ 2024-09-23 16/week @ 2024-09-30 129/week @ 2024-11-18 30/week @ 2024-11-25 15/week @ 2024-12-02

174 downloads per month

MIT license

73KB
2K SLoC

TSDL

CI badge crates.io badge

A downloader/builder of many tree-sitter parsers

Why?

To build parsers (.so/.dylib) and use them with your favourite bindings.

I created it more specifically for the ruby bindings.

Installation

You can either grab the binary for your platform from tsdl's releases or install via cargo:

cargo install tsdl

Usage

To build a parser:

tsdl build rust

To build many parsers:

tsdl build rust ruby json

If a configuration file (parsers.toml) is provided, then simply running:

tsdl build

will download all the pinned parsers.

Configuration

If no configuration is provided for the language you're asking for in parsers.toml, the latest parsers will be downloaded built.

If you wish to pin parser versions:

[parsers]
java = "v0.21.0"
json = "0.21.0" # The leading v is not necessary
python = "master"
typescript = { ref = "0.21.0", cmd = "make" }
cobol = { ref = "6a469068cacb5e3955bb16ad8dfff0dd792883c9", from = "https://github.com/yutaro-sakamoto/tree-sitter-cobol" }

Run:

tsdl config default

to get the default config used by tsdl in TOML.

[!IMPORTANT] All configuration you can pass to tsd build can be put in the parsers.toml, like tree-sitter-version, out-dir, etc.

build-dir = "/tmp/tsdl"
out-dir = "/usr/local/lib"

[parsers]
json = "0.21.0" # The leading v is not necessary
rust = "master"

[!IMPORTANT] All configuration specified in parsers.toml can be overridden with flags passed to tsdl, i.e.: tsdl build --build-dir "/tmp/tsdl" will override whatever value is the default of tsdl or in parsers.toml.

[!TIP] Check out Faveod/tree-sitter-parsers for an example configuration.

Dependencies

~25–42MB
~686K SLoC