tree-sitter/cli
Steven Kalt d35efd4608
feat(cli): support building WASM via podman
Previously, `tree-sitter build-wasm` had the ability to build WASM
by using docker to pull in an image with a complete emscripten toolchain.
This commit adds the ability to use podman to do the same thing.

Using podman requires two notable changes:
1. Using the fully-qualified image name. Docker defaults to prepending
    `docker.io` to the image name, but podman does not.
2. Podman will mount the `/src/` volume as belonging to root unless
  `--userns=keep-id` is passed. I think podman's different
  volume-ownership is related to podman's daemonless execution and
  `--uidmap` functionality, but I'm not 100% sure.

To test, I ran
```sh
script/fetch-fixtures
script/generate-fixtures
script/generate-fixtures-wasm # <- the important one!
```

which worked as well as the docker version.
2024-01-29 00:50:32 -05:00
..
benches fix(test): stick tree-sitter-cpp fixture grammar to a specific hash 2023-05-13 18:57:42 +03:00
config Use upstream wasmtime 2023-10-27 12:43:16 +01:00
loader feat(cli): support building WASM via podman 2024-01-29 00:50:32 -05:00
npm 0.20.9 2024-01-25 15:05:17 -05:00
src feat(cli): support building WASM via podman 2024-01-29 00:50:32 -05:00
vendor Add a highlight subcommand 2019-02-19 12:32:03 -08:00
build.rs Merge branch 'master' into wasm-language 2023-10-27 12:11:43 +01:00
Cargo.toml 0.20.9 2024-01-25 15:05:17 -05:00
README.md docs: update badges; fix markdown lint complains 2023-04-16 23:39:08 +03:00

Tree-sitter CLI

crates.io badge npmjs.com badge

The Tree-sitter CLI allows you to develop, test, and use Tree-sitter grammars from the command line. It works on MacOS, Linux, and Windows.

Installation

You can install the tree-sitter-cli with cargo:

cargo install tree-sitter-cli

or with npm:

npm install tree-sitter-cli

You can also download a pre-built binary for your platform from the releases page.

Dependencies

The tree-sitter binary itself has no dependencies, but specific commands have dependencies that must be present at runtime:

  • To generate a parser from a grammar, you must have node on your PATH.
  • To run and test parsers, you must have a C and C++ compiler on your system.

Commands

  • generate - The tree-sitter generate command will generate a Tree-sitter parser based on the grammar in the current working directory. See the documentation for more information.

  • test - The tree-sitter test command will run the unit tests for the Tree-sitter parser in the current working directory. See the documentation for more information.

  • parse - The tree-sitter parse command will parse a file (or list of files) using Tree-sitter parsers.