Skip to content

Commit b2cf436

Browse files
committed
Update tree-sitter bindings
* Update bindings with `tree-sitter init --update`. * Add `c` and `swift` bindings that come from `tree-sitter init` command. * Add `tree-sitter.json` configuration from `tree-sitter init` command. Signed-off-by: Thanabodee Charoenpiriyakij <wingyminus@gmail.com>
1 parent ae378d9 commit b2cf436

File tree

12 files changed

+262
-35
lines changed

12 files changed

+262
-35
lines changed

.gitattributes

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,7 @@ binding.gyp linguist-generated
99
setup.py linguist-generated
1010
Makefile linguist-generated
1111
Package.swift linguist-generated
12+
13+
# Zig bindings
14+
build.zig linguist-generated
15+
build.zig.zon linguist-generated

.gitignore

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,47 @@
1-
Cargo.lock
2-
node_modules
3-
build
4-
*.log
5-
log.html
6-
target
7-
/*.a
8-
/*.dylib
9-
/*.so*
1+
# Rust artifacts
2+
target/
3+
4+
# Node artifacts
5+
build/
6+
prebuilds/
7+
node_modules/
8+
9+
# Swift artifacts
10+
.build/
11+
12+
# Go artifacts
13+
_obj/
14+
15+
# Python artifacts
16+
.venv/
17+
dist/
18+
*.egg-info
19+
*.whl
20+
21+
# C artifacts
22+
*.a
23+
*.so
24+
*.so.*
25+
*.dylib
26+
*.dll
27+
*.pc
28+
*.exp
29+
*.lib
30+
31+
# Zig artifacts
32+
.zig-cache/
33+
zig-cache/
34+
zig-out/
35+
36+
# Example dirs
37+
/examples/*/
38+
39+
# Grammar volatiles
40+
*.wasm
41+
*.obj
1042
*.o
11-
/bindings/c/*.h
12-
/bindings/c/tree-sitter-*.pc
13-
/.build
43+
44+
# Archives
45+
*.tar.gz
46+
*.tgz
47+
*.zip

CMakeLists.txt

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
cmake_minimum_required(VERSION 3.13)
2+
3+
project(tree-sitter-earthfile
4+
VERSION "0.6.0"
5+
DESCRIPTION "Earthfile grammar for tree-sitter"
6+
HOMEPAGE_URL "https://github.com/glehmann/tree-sitter-earthfile"
7+
LANGUAGES C)
8+
9+
option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
10+
option(TREE_SITTER_REUSE_ALLOCATOR "Reuse the library allocator" OFF)
11+
12+
set(TREE_SITTER_ABI_VERSION 15 CACHE STRING "Tree-sitter ABI version")
13+
if(NOT ${TREE_SITTER_ABI_VERSION} MATCHES "^[0-9]+$")
14+
unset(TREE_SITTER_ABI_VERSION CACHE)
15+
message(FATAL_ERROR "TREE_SITTER_ABI_VERSION must be an integer")
16+
endif()
17+
18+
find_program(TREE_SITTER_CLI tree-sitter DOC "Tree-sitter CLI")
19+
20+
add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/parser.c"
21+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json"
22+
COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json
23+
--abi=${TREE_SITTER_ABI_VERSION}
24+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
25+
COMMENT "Generating parser.c")
26+
27+
add_library(tree-sitter-earthfile src/parser.c)
28+
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/scanner.c)
29+
target_sources(tree-sitter-earthfile PRIVATE src/scanner.c)
30+
endif()
31+
target_include_directories(tree-sitter-earthfile
32+
PRIVATE src
33+
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/bindings/c>
34+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
35+
36+
target_compile_definitions(tree-sitter-earthfile PRIVATE
37+
$<$<BOOL:${TREE_SITTER_REUSE_ALLOCATOR}>:TREE_SITTER_REUSE_ALLOCATOR>
38+
$<$<CONFIG:Debug>:TREE_SITTER_DEBUG>)
39+
40+
set_target_properties(tree-sitter-earthfile
41+
PROPERTIES
42+
C_STANDARD 11
43+
POSITION_INDEPENDENT_CODE ON
44+
SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}"
45+
DEFINE_SYMBOL "")
46+
47+
configure_file(bindings/c/tree-sitter-earthfile.pc.in
48+
"${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-earthfile.pc" @ONLY)
49+
50+
include(GNUInstallDirs)
51+
52+
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bindings/c/tree_sitter"
53+
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
54+
FILES_MATCHING PATTERN "*.h")
55+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-earthfile.pc"
56+
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig")
57+
install(TARGETS tree-sitter-earthfile
58+
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
59+
60+
file(GLOB QUERIES queries/*.scm)
61+
install(FILES ${QUERIES}
62+
DESTINATION "${CMAKE_INSTALL_DATADIR}/tree-sitter/queries/earthfile")
63+
64+
add_custom_target(ts-test "${TREE_SITTER_CLI}" test
65+
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
66+
COMMENT "tree-sitter test")

bindings/c/tree_sitter/tree-sitter-earthfile.h

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindings/node/binding_test.js

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindings/node/index.js

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindings/python/tests/test_binding.py

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindings/python/tree_sitter_earthfile/binding.c

Lines changed: 11 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindings/swift/TreeSitterEarthfileTests/TreeSitterEarthfileTests.swift

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module github.com/glehmann/tree-sitter-earthfile
2+
3+
go 1.22
4+
5+
require github.com/tree-sitter/go-tree-sitter v0.24.0

0 commit comments

Comments
 (0)