Files
tree-sitter-jhcl/README.md

47 lines
1.5 KiB
Markdown
Raw Normal View History

2021-06-07 20:52:50 +02:00
# tree-sitter-hcl
2021-06-13 09:26:49 +02:00
tree-sitter grammar for the [HCL](https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md) language
2021-06-08 23:18:50 +02:00
2021-06-14 23:25:32 +02:00
## Example
Highlighting `example/example.hcl`:
![Highlighting Example](https://i.imgur.com/4XFVNVT.png)
2021-06-14 23:25:32 +02:00
## Developing
2021-06-08 23:18:50 +02:00
It is recommended to use `nix` to fulfill all development dependencies. To activate the development environment simply run `nix-shell` in the project root.
## Running Tests
2021-06-08 23:18:50 +02:00
To run tests simply run `nix-shell --run 'tree-sitter test'`.
2021-06-12 21:47:30 +02:00
## Compliance
2021-06-23 20:30:30 +02:00
The directory `example/real_world_stuff` contains a corpus of hcl files that I found with the github query `language:HCL` for users `coreos`, `hashicorp`, `oracle` and `terraform-community-modules`.
```bash
2021-06-23 20:30:30 +02:00
tree-sitter parse --quiet --stat example/real_world_stuff/*/*
Total parses: 1892; successful parses: 1892; failed parses: 0; success percentage: 100.00%
```
2021-06-27 19:57:02 +02:00
## Fuzzing
The directory `fuzz/crashers` contains a set of crashes that were found with fuzzing.
## Todo
* [ ] add [template expressions](https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md#template-expressions)
2021-06-27 20:11:12 +02:00
* [x] add template interpolations
* [ ] add template directives
* [x] add quoted templates
* [x] add heredoc templates
2021-06-27 19:57:02 +02:00
* [ ] fuzzing
* [x] start with fuzzing the parser
* [x] upload fuzzing instrumentation
2021-06-27 19:57:02 +02:00
* [ ] document fuzzing process
2021-06-30 19:50:33 +02:00
* [ ] quality
* [x] add CI job that ensures the parser builds on different plattforms
2021-06-30 19:50:33 +02:00
* [ ] add CI job that parses crashers that were found during fuzzing