From 940f387a98d7a17dd343f11ee471c1a5d263f92b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 5 Nov 2025 14:31:41 +0100 Subject: [PATCH 01/29] add tree-sitter.json --- tree-sitter.json | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tree-sitter.json diff --git a/tree-sitter.json b/tree-sitter.json new file mode 100644 index 0000000..4d33ccb --- /dev/null +++ b/tree-sitter.json @@ -0,0 +1,39 @@ +{ + "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/config.schema.json", + "grammars": [ + { + "name": "dotenv", + "camelcase": "Dotenv", + "title": "Dotenv", + "scope": "source.dotenv", + "file-types": [ + "dotenv" + ], + "injection-regex": "^dotenv$", + "class-name": "TreeSitterDotenv" + } + ], + "metadata": { + "version": "0.0.4", + "license": "MIT", + "description": "Dotenv grammar for tree-sitter", + "authors": [ + { + "name": "Henrik Hautakoski", + "email": "henrik.hautakoski@gmail.com" + } + ], + "links": { + "repository": "https://github.com/pnx/tree-sitter-dotenv" + } + }, + "bindings": { + "c": true, + "go": true, + "node": true, + "python": true, + "rust": true, + "swift": true, + "zig": false + } +} \ No newline at end of file From 58608e479673200d22538b7ca3d004498d1a0d4b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 5 Nov 2025 14:33:55 +0100 Subject: [PATCH 02/29] update outdated files via `tree-sitter init -u` --- .gitattributes | 4 ++ .gitignore | 15 ++++- CMakeLists.txt | 66 +++++++++++++++++++ Makefile | 2 +- Package.swift | 2 +- .../c/{ => tree_sitter}/tree-sitter-dotenv.h | 0 bindings/node/index.js | 6 +- bindings/python/tests/test_binding.py | 2 +- bindings/python/tree_sitter_dotenv/binding.c | 14 +++- pyproject.toml | 6 +- setup.py | 47 ++++++++----- 11 files changed, 137 insertions(+), 27 deletions(-) create mode 100644 CMakeLists.txt rename bindings/c/{ => tree_sitter}/tree-sitter-dotenv.h (100%) diff --git a/.gitattributes b/.gitattributes index 4cb1058..6042937 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,3 +9,7 @@ binding.gyp linguist-generated setup.py linguist-generated Makefile linguist-generated Package.swift linguist-generated + +# Zig bindings +build.zig linguist-generated +build.zig.zon linguist-generated diff --git a/.gitignore b/.gitignore index 2fd9dac..87a0c80 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,12 @@ # Rust artifacts target/ +Cargo.lock # Node artifacts build/ prebuilds/ node_modules/ -*.tgz +package-lock.json # Swift artifacts .build/ @@ -27,6 +28,13 @@ dist/ *.dylib *.dll *.pc +*.exp +*.lib + +# Zig artifacts +.zig-cache/ +zig-cache/ +zig-out/ # Example dirs /examples/*/ @@ -35,3 +43,8 @@ dist/ *.wasm *.obj *.o + +# Archives +*.tar.gz +*.tgz +*.zip diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..386d60a --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,66 @@ +cmake_minimum_required(VERSION 3.13) + +project(tree-sitter-dotenv + VERSION "0.0.4" + DESCRIPTION "Dotenv grammar for tree-sitter" + HOMEPAGE_URL "https://github.com/pnx/tree-sitter-dotenv" + LANGUAGES C) + +option(BUILD_SHARED_LIBS "Build using shared libraries" ON) +option(TREE_SITTER_REUSE_ALLOCATOR "Reuse the library allocator" OFF) + +set(TREE_SITTER_ABI_VERSION 15 CACHE STRING "Tree-sitter ABI version") +if(NOT ${TREE_SITTER_ABI_VERSION} MATCHES "^[0-9]+$") + unset(TREE_SITTER_ABI_VERSION CACHE) + message(FATAL_ERROR "TREE_SITTER_ABI_VERSION must be an integer") +endif() + +include(GNUInstallDirs) + +find_program(TREE_SITTER_CLI tree-sitter DOC "Tree-sitter CLI") + +add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/parser.c" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/grammar.json" + COMMAND "${TREE_SITTER_CLI}" generate src/grammar.json + --abi=${TREE_SITTER_ABI_VERSION} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "Generating parser.c") + +add_library(tree-sitter-dotenv src/parser.c) +if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/scanner.c) + target_sources(tree-sitter-dotenv PRIVATE src/scanner.c) +endif() +target_include_directories(tree-sitter-dotenv + PRIVATE src + INTERFACE $ + $) + +target_compile_definitions(tree-sitter-dotenv PRIVATE + $<$:TREE_SITTER_REUSE_ALLOCATOR> + $<$:TREE_SITTER_DEBUG>) + +set_target_properties(tree-sitter-dotenv + PROPERTIES + C_STANDARD 11 + POSITION_INDEPENDENT_CODE ON + SOVERSION "${TREE_SITTER_ABI_VERSION}.${PROJECT_VERSION_MAJOR}" + DEFINE_SYMBOL "") + +configure_file(bindings/c/tree-sitter-dotenv.pc.in + "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-dotenv.pc" @ONLY) + +install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bindings/c/tree_sitter" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" + FILES_MATCHING PATTERN "*.h") +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tree-sitter-dotenv.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") +install(TARGETS tree-sitter-dotenv + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") + +file(GLOB QUERIES queries/*.scm) +install(FILES ${QUERIES} + DESTINATION "${CMAKE_INSTALL_DATADIR}/tree-sitter/queries/dotenv") + +add_custom_target(ts-test "${TREE_SITTER_CLI}" test + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT "tree-sitter test") diff --git a/Makefile b/Makefile index fcc7915..c23853d 100644 --- a/Makefile +++ b/Makefile @@ -90,7 +90,7 @@ $(PARSER): $(SRC_DIR)/grammar.json install: all install -d '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter '$(DESTDIR)$(PCLIBDIR)' '$(DESTDIR)$(LIBDIR)' - install -m644 bindings/c/$(LANGUAGE_NAME).h '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/$(LANGUAGE_NAME).h + install -m644 bindings/c/tree_sitter/$(LANGUAGE_NAME).h '$(DESTDIR)$(INCLUDEDIR)'/tree_sitter/$(LANGUAGE_NAME).h install -m644 $(LANGUAGE_NAME).pc '$(DESTDIR)$(PCLIBDIR)'/$(LANGUAGE_NAME).pc install -m644 lib$(LANGUAGE_NAME).a '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).a install -m755 lib$(LANGUAGE_NAME).$(SOEXT) '$(DESTDIR)$(LIBDIR)'/lib$(LANGUAGE_NAME).$(SOEXTVER) diff --git a/Package.swift b/Package.swift index 558017c..ade26a5 100644 --- a/Package.swift +++ b/Package.swift @@ -7,7 +7,7 @@ let package = Package( .library(name: "TreeSitterDotenv", targets: ["TreeSitterDotenv"]), ], dependencies: [ - .package(url: "https://github.com/ChimeHQ/SwiftTreeSitter", from: "0.8.0"), + .package(name: "SwiftTreeSitter", url: "https://github.com/tree-sitter/swift-tree-sitter", from: "0.8.0"), ], targets: [ .target( diff --git a/bindings/c/tree-sitter-dotenv.h b/bindings/c/tree_sitter/tree-sitter-dotenv.h similarity index 100% rename from bindings/c/tree-sitter-dotenv.h rename to bindings/c/tree_sitter/tree-sitter-dotenv.h diff --git a/bindings/node/index.js b/bindings/node/index.js index 6657bcf..385b046 100644 --- a/bindings/node/index.js +++ b/bindings/node/index.js @@ -1,6 +1,10 @@ const root = require("path").join(__dirname, "..", ".."); -module.exports = require("node-gyp-build")(root); +module.exports = + typeof process.versions.bun === "string" + // Support `bun build --compile` by being statically analyzable enough to find the .node file at build-time + ? require(`../../prebuilds/${process.platform}-${process.arch}/tree-sitter-dotenv.node`) + : require("node-gyp-build")(root); try { module.exports.nodeTypeInfo = require("../../src/node-types.json"); diff --git a/bindings/python/tests/test_binding.py b/bindings/python/tests/test_binding.py index c0b9c22..9fa99ce 100644 --- a/bindings/python/tests/test_binding.py +++ b/bindings/python/tests/test_binding.py @@ -6,6 +6,6 @@ import tree_sitter, tree_sitter_dotenv class TestLanguage(TestCase): def test_can_load_grammar(self): try: - tree_sitter.Language(tree_sitter_dotenv.language()) + Parser(Language(tree_sitter_dotenv.language())) except Exception: self.fail("Error loading Dotenv grammar") diff --git a/bindings/python/tree_sitter_dotenv/binding.c b/bindings/python/tree_sitter_dotenv/binding.c index 2c76a8b..4dcddc6 100644 --- a/bindings/python/tree_sitter_dotenv/binding.c +++ b/bindings/python/tree_sitter_dotenv/binding.c @@ -8,6 +8,13 @@ static PyObject* _binding_language(PyObject *Py_UNUSED(self), PyObject *Py_UNUSE return PyCapsule_New(tree_sitter_dotenv(), "tree_sitter.Language", NULL); } +static struct PyModuleDef_Slot slots[] = { +#ifdef Py_GIL_DISABLED + {Py_mod_gil, Py_MOD_GIL_NOT_USED}, +#endif + {0, NULL} +}; + static PyMethodDef methods[] = { {"language", _binding_language, METH_NOARGS, "Get the tree-sitter language for this grammar."}, @@ -18,10 +25,11 @@ static struct PyModuleDef module = { .m_base = PyModuleDef_HEAD_INIT, .m_name = "_binding", .m_doc = NULL, - .m_size = -1, - .m_methods = methods + .m_size = 0, + .m_methods = methods, + .m_slots = slots, }; PyMODINIT_FUNC PyInit__binding(void) { - return PyModule_Create(&module); + return PyModuleDef_Init(&module); } diff --git a/pyproject.toml b/pyproject.toml index b92263d..a7bb6df 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ classifiers = [ "Topic :: Text Processing :: Linguistic", "Typing :: Typed" ] -requires-python = ">=3.9" +requires-python = ">=3.10" license.text = "MIT" readme = "README.md" @@ -22,8 +22,8 @@ readme = "README.md" Homepage = "https://github.com/pnx/tree-sitter-dotenv" [project.optional-dependencies] -core = ["tree-sitter~=0.22"] +core = ["tree-sitter~=0.24"] [tool.cibuildwheel] -build = "cp39-*" +build = "cp310-*" build-frontend = "build" diff --git a/setup.py b/setup.py index 9f4f9f4..9028693 100644 --- a/setup.py +++ b/setup.py @@ -1,27 +1,49 @@ -from os.path import isdir, join -from platform import system +from os import path +from sysconfig import get_config_var from setuptools import Extension, find_packages, setup from setuptools.command.build import build +from setuptools.command.build_ext import build_ext +from setuptools.command.egg_info import egg_info from wheel.bdist_wheel import bdist_wheel class Build(build): def run(self): - if isdir("queries"): - dest = join(self.build_lib, "tree_sitter_dotenv", "queries") + if path.isdir("queries"): + dest = path.join(self.build_lib, "tree_sitter_dotenv", "queries") self.copy_tree("queries", dest) super().run() +class BuildExt(build_ext): + def build_extension(self, ext: Extension): + if self.compiler.compiler_type != "msvc": + ext.extra_compile_args = ["-std=c11", "-fvisibility=hidden"] + else: + ext.extra_compile_args = ["/std:c11", "/utf-8"] + if path.exists("src/scanner.c"): + ext.sources.append("src/scanner.c") + if ext.py_limited_api: + ext.define_macros.append(("Py_LIMITED_API", "0x030A0000")) + super().build_extension(ext) + + class BdistWheel(bdist_wheel): def get_tag(self): python, abi, platform = super().get_tag() if python.startswith("cp"): - python, abi = "cp39", "abi3" + python, abi = "cp310", "abi3" return python, abi, platform +class EggInfo(egg_info): + def find_sources(self): + super().find_sources() + self.filelist.recursive_include("queries", "*.scm") + self.filelist.include("src/tree_sitter/*.h") + + setup( packages=find_packages("bindings/python"), package_dir={"": "bindings/python"}, @@ -36,27 +58,20 @@ setup( sources=[ "bindings/python/tree_sitter_dotenv/binding.c", "src/parser.c", - # NOTE: if your language uses an external scanner, add it here. - ], - extra_compile_args=[ - "-std=c11", - "-fvisibility=hidden", - ] if system() != "Windows" else [ - "/std:c11", - "/utf-8", ], define_macros=[ - ("Py_LIMITED_API", "0x03090000"), ("PY_SSIZE_T_CLEAN", None), ("TREE_SITTER_HIDE_SYMBOLS", None), ], include_dirs=["src"], - py_limited_api=True, + py_limited_api=not get_config_var("Py_GIL_DISABLED"), ) ], cmdclass={ "build": Build, - "bdist_wheel": BdistWheel + "build_ext": BuildExt, + "bdist_wheel": BdistWheel, + "egg_info": EggInfo, }, zip_safe=False ) From ad14aba1d0e1ca7e5074d91e97264b8d819e0c9b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 5 Nov 2025 14:35:20 +0100 Subject: [PATCH 03/29] tree-sitter.json: add highlights --- tree-sitter.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tree-sitter.json b/tree-sitter.json index 4d33ccb..a82ec59 100644 --- a/tree-sitter.json +++ b/tree-sitter.json @@ -10,7 +10,8 @@ "dotenv" ], "injection-regex": "^dotenv$", - "class-name": "TreeSitterDotenv" + "class-name": "TreeSitterDotenv", + "highlights": "queries/highlights.scm" } ], "metadata": { @@ -36,4 +37,4 @@ "swift": true, "zig": false } -} \ No newline at end of file +} From e045d7924d383791bd9cda15c120c445ae4d2996 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 8 Feb 2026 00:58:33 +0000 Subject: [PATCH 04/29] Bump tar-fs from 2.1.1 to 2.1.4 Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 2.1.1 to 2.1.4. - [Commits](https://github.com/mafintosh/tar-fs/compare/v2.1.1...v2.1.4) --- updated-dependencies: - dependency-name: tar-fs dependency-version: 2.1.4 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e089df..3ebfd67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -308,9 +308,9 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", "dev": true, "license": "MIT", "dependencies": { From 8a9a93e4a0951c15aa07519372bfb7d13de5219b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 01:28:51 +0100 Subject: [PATCH 05/29] npm: update package versions --- package-lock.json | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e089df..3c9e6f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,9 +92,9 @@ "license": "ISC" }, "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "license": "MIT", "dependencies": { @@ -154,9 +154,9 @@ "license": "MIT" }, "node_modules/node-abi": { - "version": "3.71.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", - "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", + "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", "dev": true, "license": "MIT", "dependencies": { @@ -167,9 +167,9 @@ } }, "node_modules/node-addon-api": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.0.tgz", - "integrity": "sha512-8VOpLHFrOQlAH+qA0ZzuGRlALRA6/LVh8QJldbrC4DY0hXoMP0l4Acq8TzFC018HztWiRqyCEj2aTWY2UvnJUg==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", + "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", "license": "MIT", "engines": { "node": "^18 || ^20 || >= 21" @@ -238,9 +238,9 @@ } }, "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, "license": "MIT", "dependencies": { @@ -285,9 +285,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -308,9 +308,9 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", "dev": true, "license": "MIT", "dependencies": { From 9d343645306b7a60c1a5b15180fdf97deb255802 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 01:36:01 +0100 Subject: [PATCH 06/29] update tree-sitter-cli to 0.26.5 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3c9e6f7..0b2e493 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ }, "devDependencies": { "prebuildify": "^6.0.1", - "tree-sitter-cli": "^0.23.2" + "tree-sitter-cli": "^0.26.5" }, "peerDependencies": { "tree-sitter": "^0.21.1" @@ -338,9 +338,9 @@ } }, "node_modules/tree-sitter-cli": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.23.2.tgz", - "integrity": "sha512-kPPXprOqREX+C/FgUp2Qpt9jd0vSwn+hOgjzVv/7hapdoWpa+VeWId53rf4oNNd29ikheF12BYtGD/W90feMbA==", + "version": "0.26.5", + "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.26.5.tgz", + "integrity": "sha512-joGY67M2XUVM+ZEs7vTYmSbiDgxtwbuMf1OdKk8q1Dd6wTlbhgtU/mr3j0krBgQs2Zwom6N7vxZaqoM85b79Mw==", "dev": true, "hasInstallScript": true, "license": "MIT", diff --git a/package.json b/package.json index e7886e1..94cf567 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ }, "devDependencies": { "prebuildify": "^6.0.1", - "tree-sitter-cli": "^0.23.2" + "tree-sitter-cli": "^0.26.5" }, "peerDependencies": { "tree-sitter": "^0.21.1" From 67b30407dd9e8071441964cc340a2d6bcd22992c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 01:29:29 +0100 Subject: [PATCH 07/29] update genereted parser files --- src/grammar.json | 6 +- src/node-types.json | 1 + src/parser.c | 28 ++++-- src/tree_sitter/alloc.h | 8 +- src/tree_sitter/array.h | 195 +++++++++++++++++++++++++-------------- src/tree_sitter/parser.h | 34 +++++-- 6 files changed, 182 insertions(+), 90 deletions(-) diff --git a/src/grammar.json b/src/grammar.json index 21d87e9..6a60436 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -1,4 +1,5 @@ { + "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json", "name": "dotenv", "rules": { "document": { @@ -293,5 +294,6 @@ } ], "inline": [], - "supertypes": [] -} + "supertypes": [], + "reserved": {} +} \ No newline at end of file diff --git a/src/node-types.json b/src/node-types.json index 4d57c9d..784b3a1 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -44,6 +44,7 @@ { "type": "document", "named": true, + "root": true, "fields": {}, "children": { "multiple": true, diff --git a/src/parser.c b/src/parser.c index 5401092..392644f 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,10 +1,12 @@ +/* Automatically @generated by tree-sitter */ + #include "tree_sitter/parser.h" #if defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #endif -#define LANGUAGE_VERSION 14 +#define LANGUAGE_VERSION 15 #define STATE_COUNT 32 #define LARGE_STATE_COUNT 3 #define SYMBOL_COUNT 28 @@ -13,7 +15,9 @@ #define EXTERNAL_TOKEN_COUNT 1 #define FIELD_COUNT 2 #define MAX_ALIAS_SEQUENCE_LENGTH 4 +#define MAX_RESERVED_WORD_SET_SIZE 0 #define PRODUCTION_ID_COUNT 3 +#define SUPERTYPE_COUNT 0 enum ts_symbol_identifiers { anon_sym_EQ = 1, @@ -233,7 +237,7 @@ static const char * const ts_field_names[] = { [field_value] = "value", }; -static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { +static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [1] = {.index = 0, .length = 1}, [2] = {.index = 1, .length = 2}, }; @@ -633,7 +637,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { } } -static const TSLexMode ts_lex_modes[STATE_COUNT] = { +static const TSLexerMode ts_lex_modes[STATE_COUNT] = { [0] = {.lex_state = 0, .external_lex_state = 1}, [1] = {.lex_state = 8}, [2] = {.lex_state = 1, .external_lex_state = 1}, @@ -669,7 +673,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { - [0] = { + [STATE(0)] = { [ts_builtin_sym_end] = ACTIONS(1), [anon_sym_EQ] = ACTIONS(1), [sym_comment] = ACTIONS(1), @@ -685,7 +689,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_boolean] = ACTIONS(1), [sym__end_of_assignment] = ACTIONS(1), }, - [1] = { + [STATE(1)] = { [sym_document] = STATE(15), [sym_assignment] = STATE(4), [aux_sym_document_repeat1] = STATE(4), @@ -693,7 +697,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_comment] = ACTIONS(5), [sym_identifier] = ACTIONS(7), }, - [2] = { + [STATE(2)] = { [sym_variable] = STATE(19), [sym__value] = STATE(19), [sym_string] = STATE(19), @@ -974,7 +978,7 @@ void tree_sitter_dotenv_external_scanner_deserialize(void *, const char *, unsig TS_PUBLIC const TSLanguage *tree_sitter_dotenv(void) { static const TSLanguage language = { - .version = LANGUAGE_VERSION, + .abi_version = LANGUAGE_VERSION, .symbol_count = SYMBOL_COUNT, .alias_count = ALIAS_COUNT, .token_count = TOKEN_COUNT, @@ -982,6 +986,7 @@ TS_PUBLIC const TSLanguage *tree_sitter_dotenv(void) { .state_count = STATE_COUNT, .large_state_count = LARGE_STATE_COUNT, .production_id_count = PRODUCTION_ID_COUNT, + .supertype_count = SUPERTYPE_COUNT, .field_count = FIELD_COUNT, .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH, .parse_table = &ts_parse_table[0][0], @@ -996,7 +1001,7 @@ TS_PUBLIC const TSLanguage *tree_sitter_dotenv(void) { .public_symbol_map = ts_symbol_map, .alias_map = ts_non_terminal_alias_map, .alias_sequences = &ts_alias_sequences[0][0], - .lex_modes = ts_lex_modes, + .lex_modes = (const void*)ts_lex_modes, .lex_fn = ts_lex, .external_scanner = { &ts_external_scanner_states[0][0], @@ -1008,6 +1013,13 @@ TS_PUBLIC const TSLanguage *tree_sitter_dotenv(void) { tree_sitter_dotenv_external_scanner_deserialize, }, .primary_state_ids = ts_primary_state_ids, + .name = "dotenv", + .max_reserved_word_set_size = 0, + .metadata = { + .major_version = 0, + .minor_version = 0, + .patch_version = 4, + }, }; return &language; } diff --git a/src/tree_sitter/alloc.h b/src/tree_sitter/alloc.h index 1f4466d..1abdd12 100644 --- a/src/tree_sitter/alloc.h +++ b/src/tree_sitter/alloc.h @@ -12,10 +12,10 @@ extern "C" { // Allow clients to override allocation functions #ifdef TREE_SITTER_REUSE_ALLOCATOR -extern void *(*ts_current_malloc)(size_t); -extern void *(*ts_current_calloc)(size_t, size_t); -extern void *(*ts_current_realloc)(void *, size_t); -extern void (*ts_current_free)(void *); +extern void *(*ts_current_malloc)(size_t size); +extern void *(*ts_current_calloc)(size_t count, size_t size); +extern void *(*ts_current_realloc)(void *ptr, size_t size); +extern void (*ts_current_free)(void *ptr); #ifndef ts_malloc #define ts_malloc ts_current_malloc diff --git a/src/tree_sitter/array.h b/src/tree_sitter/array.h index 15a3b23..e99918e 100644 --- a/src/tree_sitter/array.h +++ b/src/tree_sitter/array.h @@ -14,6 +14,7 @@ extern "C" { #include #ifdef _MSC_VER +#pragma warning(push) #pragma warning(disable : 4101) #elif defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic push @@ -51,67 +52,91 @@ extern "C" { /// Reserve `new_capacity` elements of space in the array. If `new_capacity` is /// less than the array's current capacity, this function has no effect. -#define array_reserve(self, new_capacity) \ - _array__reserve((Array *)(self), array_elem_size(self), new_capacity) +#define array_reserve(self, new_capacity) \ + ((self)->contents = _array__reserve( \ + (void *)(self)->contents, &(self)->capacity, \ + array_elem_size(self), new_capacity) \ + ) /// Free any memory allocated for this array. Note that this does not free any /// memory allocated for the array's contents. -#define array_delete(self) _array__delete((Array *)(self)) +#define array_delete(self) _array__delete((self), (void *)(self)->contents, sizeof(*self)) /// Push a new `element` onto the end of the array. -#define array_push(self, element) \ - (_array__grow((Array *)(self), 1, array_elem_size(self)), \ - (self)->contents[(self)->size++] = (element)) +#define array_push(self, element) \ + do { \ + (self)->contents = _array__grow( \ + (void *)(self)->contents, (self)->size, &(self)->capacity, \ + 1, array_elem_size(self) \ + ); \ + (self)->contents[(self)->size++] = (element); \ + } while(0) /// Increase the array's size by `count` elements. /// New elements are zero-initialized. -#define array_grow_by(self, count) \ - do { \ - if ((count) == 0) break; \ - _array__grow((Array *)(self), count, array_elem_size(self)); \ +#define array_grow_by(self, count) \ + do { \ + if ((count) == 0) break; \ + (self)->contents = _array__grow( \ + (self)->contents, (self)->size, &(self)->capacity, \ + count, array_elem_size(self) \ + ); \ memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)); \ - (self)->size += (count); \ + (self)->size += (count); \ } while (0) /// Append all elements from one array to the end of another. -#define array_push_all(self, other) \ +#define array_push_all(self, other) \ array_extend((self), (other)->size, (other)->contents) /// Append `count` elements to the end of the array, reading their values from the /// `contents` pointer. -#define array_extend(self, count, contents) \ - _array__splice( \ - (Array *)(self), array_elem_size(self), (self)->size, \ - 0, count, contents \ +#define array_extend(self, count, other_contents) \ + (self)->contents = _array__splice( \ + (void*)(self)->contents, &(self)->size, &(self)->capacity, \ + array_elem_size(self), (self)->size, 0, count, other_contents \ ) /// Remove `old_count` elements from the array starting at the given `index`. At /// the same index, insert `new_count` new elements, reading their values from the /// `new_contents` pointer. -#define array_splice(self, _index, old_count, new_count, new_contents) \ - _array__splice( \ - (Array *)(self), array_elem_size(self), _index, \ - old_count, new_count, new_contents \ +#define array_splice(self, _index, old_count, new_count, new_contents) \ + (self)->contents = _array__splice( \ + (void *)(self)->contents, &(self)->size, &(self)->capacity, \ + array_elem_size(self), _index, old_count, new_count, new_contents \ ) /// Insert one `element` into the array at the given `index`. -#define array_insert(self, _index, element) \ - _array__splice((Array *)(self), array_elem_size(self), _index, 0, 1, &(element)) +#define array_insert(self, _index, element) \ + (self)->contents = _array__splice( \ + (void *)(self)->contents, &(self)->size, &(self)->capacity, \ + array_elem_size(self), _index, 0, 1, &(element) \ + ) /// Remove one element from the array at the given `index`. #define array_erase(self, _index) \ - _array__erase((Array *)(self), array_elem_size(self), _index) + _array__erase((void *)(self)->contents, &(self)->size, array_elem_size(self), _index) /// Pop the last element off the array, returning the element by value. #define array_pop(self) ((self)->contents[--(self)->size]) /// Assign the contents of one array to another, reallocating if necessary. -#define array_assign(self, other) \ - _array__assign((Array *)(self), (const Array *)(other), array_elem_size(self)) +#define array_assign(self, other) \ + (self)->contents = _array__assign( \ + (void *)(self)->contents, &(self)->size, &(self)->capacity, \ + (const void *)(other)->contents, (other)->size, array_elem_size(self) \ + ) /// Swap one array with another -#define array_swap(self, other) \ - _array__swap((Array *)(self), (Array *)(other)) +#define array_swap(self, other) \ + do { \ + struct Swap swapped_contents = _array__swap( \ + (void *)(self)->contents, &(self)->size, &(self)->capacity, \ + (void *)(other)->contents, &(other)->size, &(other)->capacity \ + ); \ + (self)->contents = swapped_contents.self_contents; \ + (other)->contents = swapped_contents.other_contents; \ + } while (0) /// Get the size of the array contents #define array_elem_size(self) (sizeof *(self)->contents) @@ -156,82 +181,112 @@ extern "C" { // Private -typedef Array(void) Array; +// Pointers to individual `Array` fields (rather than the entire `Array` itself) +// are passed to the various `_array__*` functions below to address strict aliasing +// violations that arises when the _entire_ `Array` struct is passed as `Array(void)*`. +// +// The `Array` type itself was not altered as a solution in order to avoid breakage +// with existing consumers (in particular, parsers with external scanners). /// This is not what you're looking for, see `array_delete`. -static inline void _array__delete(Array *self) { - if (self->contents) { - ts_free(self->contents); - self->contents = NULL; - self->size = 0; - self->capacity = 0; - } +static inline void _array__delete(void *self, void *contents, size_t self_size) { + if (contents) ts_free(contents); + if (self) memset(self, 0, self_size); } /// This is not what you're looking for, see `array_erase`. -static inline void _array__erase(Array *self, size_t element_size, - uint32_t index) { - assert(index < self->size); - char *contents = (char *)self->contents; +static inline void _array__erase(void* self_contents, uint32_t *size, + size_t element_size, uint32_t index) { + assert(index < *size); + char *contents = (char *)self_contents; memmove(contents + index * element_size, contents + (index + 1) * element_size, - (self->size - index - 1) * element_size); - self->size--; + (*size - index - 1) * element_size); + (*size)--; } /// This is not what you're looking for, see `array_reserve`. -static inline void _array__reserve(Array *self, size_t element_size, uint32_t new_capacity) { - if (new_capacity > self->capacity) { - if (self->contents) { - self->contents = ts_realloc(self->contents, new_capacity * element_size); +static inline void *_array__reserve(void *contents, uint32_t *capacity, + size_t element_size, uint32_t new_capacity) { + void *new_contents = contents; + if (new_capacity > *capacity) { + if (contents) { + new_contents = ts_realloc(contents, new_capacity * element_size); } else { - self->contents = ts_malloc(new_capacity * element_size); + new_contents = ts_malloc(new_capacity * element_size); } - self->capacity = new_capacity; + *capacity = new_capacity; } + return new_contents; } /// This is not what you're looking for, see `array_assign`. -static inline void _array__assign(Array *self, const Array *other, size_t element_size) { - _array__reserve(self, element_size, other->size); - self->size = other->size; - memcpy(self->contents, other->contents, self->size * element_size); +static inline void *_array__assign(void* self_contents, uint32_t *self_size, uint32_t *self_capacity, + const void *other_contents, uint32_t other_size, size_t element_size) { + void *new_contents = _array__reserve(self_contents, self_capacity, element_size, other_size); + *self_size = other_size; + memcpy(new_contents, other_contents, *self_size * element_size); + return new_contents; } +struct Swap { + void *self_contents; + void *other_contents; +}; + /// This is not what you're looking for, see `array_swap`. -static inline void _array__swap(Array *self, Array *other) { - Array swap = *other; - *other = *self; - *self = swap; +// static inline void _array__swap(Array *self, Array *other) { +static inline struct Swap _array__swap(void *self_contents, uint32_t *self_size, uint32_t *self_capacity, + void *other_contents, uint32_t *other_size, uint32_t *other_capacity) { + void *new_self_contents = other_contents; + uint32_t new_self_size = *other_size; + uint32_t new_self_capacity = *other_capacity; + + void *new_other_contents = self_contents; + *other_size = *self_size; + *other_capacity = *self_capacity; + + *self_size = new_self_size; + *self_capacity = new_self_capacity; + + struct Swap out = { + .self_contents = new_self_contents, + .other_contents = new_other_contents, + }; + return out; } /// This is not what you're looking for, see `array_push` or `array_grow_by`. -static inline void _array__grow(Array *self, uint32_t count, size_t element_size) { - uint32_t new_size = self->size + count; - if (new_size > self->capacity) { - uint32_t new_capacity = self->capacity * 2; +static inline void *_array__grow(void *contents, uint32_t size, uint32_t *capacity, + uint32_t count, size_t element_size) { + void *new_contents = contents; + uint32_t new_size = size + count; + if (new_size > *capacity) { + uint32_t new_capacity = *capacity * 2; if (new_capacity < 8) new_capacity = 8; if (new_capacity < new_size) new_capacity = new_size; - _array__reserve(self, element_size, new_capacity); + new_contents = _array__reserve(contents, capacity, element_size, new_capacity); } + return new_contents; } /// This is not what you're looking for, see `array_splice`. -static inline void _array__splice(Array *self, size_t element_size, +static inline void *_array__splice(void *self_contents, uint32_t *size, uint32_t *capacity, + size_t element_size, uint32_t index, uint32_t old_count, uint32_t new_count, const void *elements) { - uint32_t new_size = self->size + new_count - old_count; + uint32_t new_size = *size + new_count - old_count; uint32_t old_end = index + old_count; uint32_t new_end = index + new_count; - assert(old_end <= self->size); + assert(old_end <= *size); - _array__reserve(self, element_size, new_size); + void *new_contents = _array__reserve(self_contents, capacity, element_size, new_size); - char *contents = (char *)self->contents; - if (self->size > old_end) { + char *contents = (char *)new_contents; + if (*size > old_end) { memmove( contents + new_end * element_size, contents + old_end * element_size, - (self->size - old_end) * element_size + (*size - old_end) * element_size ); } if (new_count > 0) { @@ -249,7 +304,9 @@ static inline void _array__splice(Array *self, size_t element_size, ); } } - self->size += new_count - old_count; + *size += new_count - old_count; + + return new_contents; } /// A binary search routine, based on Rust's `std::slice::binary_search_by`. @@ -278,7 +335,7 @@ static inline void _array__splice(Array *self, size_t element_size, #define _compare_int(a, b) ((int)*(a) - (int)(b)) #ifdef _MSC_VER -#pragma warning(default : 4101) +#pragma warning(pop) #elif defined(__GNUC__) || defined(__clang__) #pragma GCC diagnostic pop #endif diff --git a/src/tree_sitter/parser.h b/src/tree_sitter/parser.h index 799f599..858107d 100644 --- a/src/tree_sitter/parser.h +++ b/src/tree_sitter/parser.h @@ -18,6 +18,11 @@ typedef uint16_t TSStateId; typedef uint16_t TSSymbol; typedef uint16_t TSFieldId; typedef struct TSLanguage TSLanguage; +typedef struct TSLanguageMetadata { + uint8_t major_version; + uint8_t minor_version; + uint8_t patch_version; +} TSLanguageMetadata; #endif typedef struct { @@ -26,10 +31,11 @@ typedef struct { bool inherited; } TSFieldMapEntry; +// Used to index the field and supertype maps. typedef struct { uint16_t index; uint16_t length; -} TSFieldMapSlice; +} TSMapSlice; typedef struct { bool visible; @@ -79,6 +85,12 @@ typedef struct { uint16_t external_lex_state; } TSLexMode; +typedef struct { + uint16_t lex_state; + uint16_t external_lex_state; + uint16_t reserved_word_set_id; +} TSLexerMode; + typedef union { TSParseAction action; struct { @@ -93,7 +105,7 @@ typedef struct { } TSCharacterRange; struct TSLanguage { - uint32_t version; + uint32_t abi_version; uint32_t symbol_count; uint32_t alias_count; uint32_t token_count; @@ -109,13 +121,13 @@ struct TSLanguage { const TSParseActionEntry *parse_actions; const char * const *symbol_names; const char * const *field_names; - const TSFieldMapSlice *field_map_slices; + const TSMapSlice *field_map_slices; const TSFieldMapEntry *field_map_entries; const TSSymbolMetadata *symbol_metadata; const TSSymbol *public_symbol_map; const uint16_t *alias_map; const TSSymbol *alias_sequences; - const TSLexMode *lex_modes; + const TSLexerMode *lex_modes; bool (*lex_fn)(TSLexer *, TSStateId); bool (*keyword_lex_fn)(TSLexer *, TSStateId); TSSymbol keyword_capture_token; @@ -129,15 +141,23 @@ struct TSLanguage { void (*deserialize)(void *, const char *, unsigned); } external_scanner; const TSStateId *primary_state_ids; + const char *name; + const TSSymbol *reserved_words; + uint16_t max_reserved_word_set_size; + uint32_t supertype_count; + const TSSymbol *supertype_symbols; + const TSMapSlice *supertype_map_slices; + const TSSymbol *supertype_map_entries; + TSLanguageMetadata metadata; }; -static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t lookahead) { +static inline bool set_contains(const TSCharacterRange *ranges, uint32_t len, int32_t lookahead) { uint32_t index = 0; uint32_t size = len - index; while (size > 1) { uint32_t half_size = size / 2; uint32_t mid_index = index + half_size; - TSCharacterRange *range = &ranges[mid_index]; + const TSCharacterRange *range = &ranges[mid_index]; if (lookahead >= range->start && lookahead <= range->end) { return true; } else if (lookahead > range->end) { @@ -145,7 +165,7 @@ static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t } size -= half_size; } - TSCharacterRange *range = &ranges[index]; + const TSCharacterRange *range = &ranges[index]; return (lookahead >= range->start && lookahead <= range->end); } From 8bae258c715fcf1db620a84517debd575797c1b4 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 01:40:45 +0100 Subject: [PATCH 08/29] src/scanner.c: advanceWS should be static --- src/scanner.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scanner.c b/src/scanner.c index 9db617d..baaec2a 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -18,7 +18,7 @@ unsigned tree_sitter_dotenv_external_scanner_serialize(void *payload, char *buff void tree_sitter_dotenv_external_scanner_deserialize(void *payload, const char *buffer, unsigned length) {} -void advanceWS(TSLexer *lexer) { +void static advanceWS(TSLexer *lexer) { while (lexer->lookahead == ' ' || lexer->lookahead == '\t') { lexer->advance(lexer, true); } From ed2b8211fac34c8b53bca97ba209c384a795e495 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 01:45:07 +0100 Subject: [PATCH 09/29] cargo: update tree-sitter to 0.26.5 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index eda8f0f..c18b42a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,4 +23,4 @@ tree-sitter-language = "0.1" cc = "1.0.87" [dev-dependencies] -tree-sitter = "0.23" +tree-sitter = "0.26.5" From 911009681d666845dfa2de43471d3c155dcfab50 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 01:45:24 +0100 Subject: [PATCH 10/29] cargo: update version to 0.0.4 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index c18b42a..6f547ff 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "tree-sitter-dotenv" description = "Dotenv grammar for tree-sitter" -version = "0.0.1" +version = "0.0.4" license = "MIT" readme = "README.md" keywords = ["incremental", "parsing", "tree-sitter", "dotenv"] From 8a40a33fa938c17d206f0e3ab332aed456037a47 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 01:29:41 +0100 Subject: [PATCH 11/29] adding .github/workflows/ci.yml --- .github/workflows/ci.yml | 69 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..474e57a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,69 @@ +name: CI + +on: + push: + paths: + - grammar.js + - src/** + - test/** + - bindings/** + - tree-sitter.json + pull_request: + paths: + - grammar.js + - src/** + - test/** + - bindings/** + - tree-sitter.json + +concurrency: + group: ${{github.workflow}}-${{github.ref}} + cancel-in-progress: true + +jobs: + test: + name: Test parser + runs-on: ${{matrix.os}} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Set up tree-sitter + uses: tree-sitter/setup-action/cli@v2 + - name: Run parser and binding tests + uses: tree-sitter/parser-test-action@v2 + with: + test-rust: true + - name: Parse sample files + uses: tree-sitter/parse-action@v4 + id: parse-files + with: + files: examples/** + - name: Upload failures artifact + uses: actions/upload-artifact@v4 + if: "!cancelled() && steps.parse-files.outcome == 'failure'" + with: + name: failures-${{runner.os}} + path: ${{steps.parse-files.outputs.failures}} + fuzz: + name: Fuzz scanner + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 2 + - name: Check for scanner changes + id: scanner-check + run: |- + if git diff --quiet HEAD^ -- src/scanner.c; then + printf 'changed=false\n' >> "$GITHUB_OUTPUT" + else + printf 'changed=true\n' >> "$GITHUB_OUTPUT" + fi + - name: Run the fuzzer + uses: tree-sitter/fuzz-action@v4 + if: steps.scanner-check.outputs.changed == 'true' From 564c8799a4454b217b0c17fe4f63c6bf822c8071 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 01:54:42 +0100 Subject: [PATCH 12/29] add dependabot regeneration config --- .github/dependabot.yml | 81 ++++++++++++++++++++++++++++++++++ .github/workflows/generate.yml | 17 +++++++ 2 files changed, 98 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/generate.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..3e6180d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,81 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + day: sunday + commit-message: + prefix: ci + labels: + - dependencies + groups: + actions: + patterns: ["*"] + + - package-ecosystem: npm + versioning-strategy: increase + directory: / + schedule: + interval: weekly + day: sunday + commit-message: + prefix: build(deps) + labels: + - dependencies + groups: + npm: + patterns: ["*"] + + - package-ecosystem: cargo + directory: / + schedule: + interval: weekly + day: sunday + commit-message: + prefix: build(deps) + labels: + - dependencies + groups: + cargo: + patterns: ["*"] + + - package-ecosystem: pip + directory: / + schedule: + interval: weekly + day: sunday + commit-message: + prefix: build(deps) + labels: + - dependencies + groups: + pip: + patterns: ["*"] + + - package-ecosystem: swift + directory: / + schedule: + interval: weekly + day: sunday + commit-message: + prefix: build(deps) + labels: + - dependencies + groups: + swift: + patterns: ["*"] + + - package-ecosystem: gomod + directory: / + schedule: + interval: weekly + day: sunday + commit-message: + prefix: build(deps) + labels: + - dependencies + groups: + go: + patterns: ["*"] + diff --git a/.github/workflows/generate.yml b/.github/workflows/generate.yml new file mode 100644 index 0000000..75cc0f4 --- /dev/null +++ b/.github/workflows/generate.yml @@ -0,0 +1,17 @@ +name: Regenerate parser + +on: + pull_request: + +permissions: + contents: write + pull-requests: write + +concurrency: + group: ${{github.workflow}}-${{github.ref}} + cancel-in-progress: true + +jobs: + regenerate: + uses: tree-sitter/workflows/.github/workflows/regenerate.yml@main + if: github.actor == 'dependabot[bot]' From 8adb2f1d52502ca6994185cb027498bc6e4eb8cf Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 02:00:02 +0100 Subject: [PATCH 13/29] add .github/workflows/release.yml --- .github/workflows/release.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..bc3b2ef --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,18 @@ +name: Create release + +on: + push: + tags: ["*"] + +concurrency: + group: ${{github.workflow}}-${{github.ref}} + cancel-in-progress: true + +permissions: + contents: write + id-token: write + attestations: write + +jobs: + release: + uses: tree-sitter/workflows/.github/workflows/release.yml@main From d403ce05d8429df6a902eb3197f67b022b8e6274 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 09:37:29 +0100 Subject: [PATCH 14/29] queries/highlights.scm: format --- queries/highlights.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/queries/highlights.scm b/queries/highlights.scm index 9d9392c..93793d4 100644 --- a/queries/highlights.scm +++ b/queries/highlights.scm @@ -1,7 +1,16 @@ "=" @operator + (boolean) @constant + (number) @number + (string) @string -[(identifier) (variable)] @variable + +[ + (identifier) + (variable) +] @variable + (value) @string + (comment) @comment From 4f3ca7dc47ddb75dc152cb39019f769ef68d0d04 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 09:38:45 +0100 Subject: [PATCH 15/29] ci: validate queries --- .github/workflows/ci.yml | 18 ++++++++++++++++++ .tsqueryrc.json | 4 ++++ 2 files changed, 22 insertions(+) create mode 100644 .tsqueryrc.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 474e57a..f457ea9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,3 +67,21 @@ jobs: - name: Run the fuzzer uses: tree-sitter/fuzz-action@v4 if: steps.scanner-check.outputs.changed == 'true' + query: + name: Validate queries + runs-on: ubuntu-latest + steps: + - name: Set up repository + uses: actions/checkout@v6 + + - name: Set up tree-sitter + uses: tree-sitter/setup-action/cli@v2 + + - name: Build parser + run: tree-sitter build + + - name: Set up ts_query_ls + run: curl -fL https://github.com/ribru17/ts_query_ls/releases/latest/download/ts_query_ls-x86_64-unknown-linux-gnu.tar.gz | tar -xz + + - name: Check queries + run: ./ts_query_ls check -f queries/ diff --git a/.tsqueryrc.json b/.tsqueryrc.json new file mode 100644 index 0000000..3619c9b --- /dev/null +++ b/.tsqueryrc.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://raw.githubusercontent.com/ribru17/ts_query_ls/refs/heads/master/schemas/config.json", + "parser_install_directories": ["."] +} From 7878ce16467d9909d39cc11f44c2eea15282e5c7 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 8 Feb 2026 09:41:38 +0100 Subject: [PATCH 16/29] v0.0.5 --- CMakeLists.txt | 2 +- Cargo.toml | 2 +- Makefile | 2 +- package.json | 2 +- pyproject.toml | 2 +- src/parser.c | 2 +- tree-sitter.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 386d60a..57de1c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.13) project(tree-sitter-dotenv - VERSION "0.0.4" + VERSION "0.0.5" DESCRIPTION "Dotenv grammar for tree-sitter" HOMEPAGE_URL "https://github.com/pnx/tree-sitter-dotenv" LANGUAGES C) diff --git a/Cargo.toml b/Cargo.toml index 6f547ff..94df67d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "tree-sitter-dotenv" description = "Dotenv grammar for tree-sitter" -version = "0.0.4" +version = "0.0.5" license = "MIT" readme = "README.md" keywords = ["incremental", "parsing", "tree-sitter", "dotenv"] diff --git a/Makefile b/Makefile index c23853d..b20820e 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ ifeq ($(OS),Windows_NT) $(error Windows is not supported) endif -VERSION := 0.0.1 +VERSION := 0.0.5 LANGUAGE_NAME := tree-sitter-dotenv diff --git a/package.json b/package.json index 94cf567..cd002a5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tree-sitter-dotenv", - "version": "0.0.1", + "version": "0.0.5", "description": "Dotenv grammar for tree-sitter", "repository": "github:pnx/tree-sitter-dotenv", "license": "MIT", diff --git a/pyproject.toml b/pyproject.toml index a7bb6df..80f89cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "tree-sitter-dotenv" description = "Dotenv grammar for tree-sitter" -version = "0.0.1" +version = "0.0.5" keywords = ["incremental", "parsing", "tree-sitter", "dotenv"] classifiers = [ "Intended Audience :: Developers", diff --git a/src/parser.c b/src/parser.c index 392644f..b135b46 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1018,7 +1018,7 @@ TS_PUBLIC const TSLanguage *tree_sitter_dotenv(void) { .metadata = { .major_version = 0, .minor_version = 0, - .patch_version = 4, + .patch_version = 5, }, }; return &language; diff --git a/tree-sitter.json b/tree-sitter.json index a82ec59..4597f2a 100644 --- a/tree-sitter.json +++ b/tree-sitter.json @@ -15,7 +15,7 @@ } ], "metadata": { - "version": "0.0.4", + "version": "0.0.5", "license": "MIT", "description": "Dotenv grammar for tree-sitter", "authors": [ From 6118d6004db476049601e2bb6dabf53521f81e63 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 8 Feb 2026 08:52:19 +0000 Subject: [PATCH 17/29] build(deps): bump github.com/tree-sitter/go-tree-sitter in the go group Bumps the go group with 1 update: [github.com/tree-sitter/go-tree-sitter](https://github.com/tree-sitter/go-tree-sitter). Updates `github.com/tree-sitter/go-tree-sitter` from 0.24.0 to 0.25.0 - [Commits](https://github.com/tree-sitter/go-tree-sitter/commits) --- updated-dependencies: - dependency-name: github.com/tree-sitter/go-tree-sitter dependency-version: 0.25.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 56 ++++++++++++++++++++++++++++---------------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index bd0e0a2..b189610 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,7 @@ module github.com/pnx/tree-sitter-dotenv -go 1.22 +go 1.23 -require github.com/tree-sitter/go-tree-sitter v0.24.0 +require github.com/tree-sitter/go-tree-sitter v0.25.0 require github.com/mattn/go-pointer v0.0.1 // indirect diff --git a/go.sum b/go.sum index 0a48bbe..2e3462c 100644 --- a/go.sum +++ b/go.sum @@ -4,33 +4,33 @@ github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/tree-sitter/go-tree-sitter v0.24.0 h1:kRZb6aBNfcI/u0Qh8XEt3zjNVnmxTisDBN+kXK0xRYQ= -github.com/tree-sitter/go-tree-sitter v0.24.0/go.mod h1:x681iFVoLMEwOSIHA1chaLkXlroXEN7WY+VHGFaoDbk= -github.com/tree-sitter/tree-sitter-c v0.21.5-0.20240818205408-927da1f210eb h1:A8425heRM8mylnv4H58FPUiH+aYivyitre0PzxrfmWs= -github.com/tree-sitter/tree-sitter-c v0.21.5-0.20240818205408-927da1f210eb/go.mod h1:dOF6gtQiF9UwNh995T5OphYmtIypkjsp3ap7r9AN/iA= -github.com/tree-sitter/tree-sitter-cpp v0.22.4-0.20240818224355-b1a4e2b25148 h1:AfFPZwtwGN01BW1jDdqBVqscTwetvMpydqYZz57RSlc= -github.com/tree-sitter/tree-sitter-cpp v0.22.4-0.20240818224355-b1a4e2b25148/go.mod h1:Bh6U3viD57rFXRYIQ+kmiYtr+1Bx0AceypDLJJSyi9s= -github.com/tree-sitter/tree-sitter-embedded-template v0.21.1-0.20240819044651-ffbf64942c33 h1:TwqSV3qLp3tKSqirGLRHnjFk9Tc2oy57LIl+FQ4GjI4= -github.com/tree-sitter/tree-sitter-embedded-template v0.21.1-0.20240819044651-ffbf64942c33/go.mod h1:CvCKCt3v04Ufos1zZnNCelBDeCGRpPucaN8QczoUsN4= -github.com/tree-sitter/tree-sitter-go v0.21.3-0.20240818010209-8c0f0e7a6012 h1:Xvxck3tE5FW7F7bTS97iNM2ADMyCMJztVqn5HYKdJGo= -github.com/tree-sitter/tree-sitter-go v0.21.3-0.20240818010209-8c0f0e7a6012/go.mod h1:T40D0O1cPvUU/+AmiXVXy1cncYQT6wem4Z0g4SfAYvY= -github.com/tree-sitter/tree-sitter-html v0.20.5-0.20240818004741-d11201a263d0 h1:c46K6uh5Dz00zJeU9BfjXdb8I+E4RkUdfnWJpQADXFo= -github.com/tree-sitter/tree-sitter-html v0.20.5-0.20240818004741-d11201a263d0/go.mod h1:hcNt/kOJHcIcuMvouE7LJcYdeFUFbVpBJ6d4wmOA+tU= -github.com/tree-sitter/tree-sitter-java v0.21.1-0.20240824015150-576d8097e495 h1:jrt4qbJVEFs4H93/ITxygHc6u0TGqAkkate7TQ4wFSA= -github.com/tree-sitter/tree-sitter-java v0.21.1-0.20240824015150-576d8097e495/go.mod h1:oyaR7fLnRV0hT9z6qwE9GkaeTom/hTDwK3H2idcOJFc= -github.com/tree-sitter/tree-sitter-javascript v0.21.5-0.20240818005344-15887341e5b5 h1:om4X9AVg3asL8gxNJDcz4e/Wp+VpQj1PY3uJXKr6EOg= -github.com/tree-sitter/tree-sitter-javascript v0.21.5-0.20240818005344-15887341e5b5/go.mod h1:nNqgPoV/h9uYWk6kYEFdEAhNVOacpfpRW5SFmdaP4tU= -github.com/tree-sitter/tree-sitter-json v0.21.1-0.20240818005659-bdd69eb8c8a5 h1:pfV3G3k7NCKqKk8THBmyuh2zA33lgYHS3GVrzRR8ry4= -github.com/tree-sitter/tree-sitter-json v0.21.1-0.20240818005659-bdd69eb8c8a5/go.mod h1:GbMKRjLfk0H+PI7nLi1Sx5lHf5wCpLz9al8tQYSxpEk= -github.com/tree-sitter/tree-sitter-php v0.22.9-0.20240819002312-a552625b56c1 h1:ZXZMDwE+IhUtGug4Brv6NjJWUU3rfkZBKpemf6RY8/g= -github.com/tree-sitter/tree-sitter-php v0.22.9-0.20240819002312-a552625b56c1/go.mod h1:UKCLuYnJ312Mei+3cyTmGOHzn0YAnaPRECgJmHtzrqs= -github.com/tree-sitter/tree-sitter-python v0.21.1-0.20240818005537-55a9b8a4fbfb h1:EXEM82lFM7JjJb6qiKZXkpIDaCcbV2obNn82ghwj9lw= -github.com/tree-sitter/tree-sitter-python v0.21.1-0.20240818005537-55a9b8a4fbfb/go.mod h1:lXCF1nGG5Dr4J3BTS0ObN4xJCCICiSu/b+Xe/VqMV7g= -github.com/tree-sitter/tree-sitter-ruby v0.21.1-0.20240818211811-7dbc1e2d0e2d h1:fcYCvoXdcP1uRQYXqJHRy6Hec+uKScQdKVtMwK9JeCI= -github.com/tree-sitter/tree-sitter-ruby v0.21.1-0.20240818211811-7dbc1e2d0e2d/go.mod h1:T1nShQ4v5AJtozZ8YyAS4uzUtDAJj/iv4YfwXSbUHzg= -github.com/tree-sitter/tree-sitter-rust v0.21.3-0.20240818005432-2b43eafe6447 h1:o9alBu1J/WjrcTKEthYtXmdkDc5OVXD+PqlvnEZ0Lzc= -github.com/tree-sitter/tree-sitter-rust v0.21.3-0.20240818005432-2b43eafe6447/go.mod h1:1Oh95COkkTn6Ezp0vcMbvfhRP5gLeqqljR0BYnBzWvc= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tree-sitter/go-tree-sitter v0.25.0 h1:sx6kcg8raRFCvc9BnXglke6axya12krCJF5xJ2sftRU= +github.com/tree-sitter/go-tree-sitter v0.25.0/go.mod h1:r77ig7BikoZhHrrsjAnv8RqGti5rtSyvDHPzgTPsUuU= +github.com/tree-sitter/tree-sitter-c v0.23.4 h1:nBPH3FV07DzAD7p0GfNvXM+Y7pNIoPenQWBpvM++t4c= +github.com/tree-sitter/tree-sitter-c v0.23.4/go.mod h1:MkI5dOiIpeN94LNjeCp8ljXN/953JCwAby4bClMr6bw= +github.com/tree-sitter/tree-sitter-cpp v0.23.4 h1:LaWZsiqQKvR65yHgKmnaqA+uz6tlDJTJFCyFIeZU/8w= +github.com/tree-sitter/tree-sitter-cpp v0.23.4/go.mod h1:doqNW64BriC7WBCQ1klf0KmJpdEvfxyXtoEybnBo6v8= +github.com/tree-sitter/tree-sitter-embedded-template v0.23.2 h1:nFkkH6Sbe56EXLmZBqHHcamTpmz3TId97I16EnGy4rg= +github.com/tree-sitter/tree-sitter-embedded-template v0.23.2/go.mod h1:HNPOhN0qF3hWluYLdxWs5WbzP/iE4aaRVPMsdxuzIaQ= +github.com/tree-sitter/tree-sitter-go v0.23.4 h1:yt5KMGnTHS+86pJmLIAZMWxukr8W7Ae1STPvQUuNROA= +github.com/tree-sitter/tree-sitter-go v0.23.4/go.mod h1:Jrx8QqYN0v7npv1fJRH1AznddllYiCMUChtVjxPK040= +github.com/tree-sitter/tree-sitter-html v0.23.2 h1:1UYDV+Yd05GGRhVnTcbP58GkKLSHHZwVaN+lBZV11Lc= +github.com/tree-sitter/tree-sitter-html v0.23.2/go.mod h1:gpUv/dG3Xl/eebqgeYeFMt+JLOY9cgFinb/Nw08a9og= +github.com/tree-sitter/tree-sitter-java v0.23.5 h1:J9YeMGMwXYlKSP3K4Us8CitC6hjtMjqpeOf2GGo6tig= +github.com/tree-sitter/tree-sitter-java v0.23.5/go.mod h1:NRKlI8+EznxA7t1Yt3xtraPk1Wzqh3GAIC46wxvc320= +github.com/tree-sitter/tree-sitter-javascript v0.23.1 h1:1fWupaRC0ArlHJ/QJzsfQ3Ibyopw7ZfQK4xXc40Zveo= +github.com/tree-sitter/tree-sitter-javascript v0.23.1/go.mod h1:lmGD1EJdCA+v0S1u2fFgepMg/opzSg/4pgFym2FPGAs= +github.com/tree-sitter/tree-sitter-json v0.24.8 h1:tV5rMkihgtiOe14a9LHfDY5kzTl5GNUYe6carZBn0fQ= +github.com/tree-sitter/tree-sitter-json v0.24.8/go.mod h1:F351KK0KGvCaYbZ5zxwx/gWWvZhIDl0eMtn+1r+gQbo= +github.com/tree-sitter/tree-sitter-php v0.23.11 h1:iHewsLNDmznh8kgGyfWfujsZxIz1YGbSd2ZTEM0ZiP8= +github.com/tree-sitter/tree-sitter-php v0.23.11/go.mod h1:T/kbfi+UcCywQfUNAJnGTN/fMSUjnwPXA8k4yoIks74= +github.com/tree-sitter/tree-sitter-python v0.23.6 h1:qHnWFR5WhtMQpxBZRwiaU5Hk/29vGju6CVtmvu5Haas= +github.com/tree-sitter/tree-sitter-python v0.23.6/go.mod h1:cpdthSy/Yoa28aJFBscFHlGiU+cnSiSh1kuDVtI8YeM= +github.com/tree-sitter/tree-sitter-ruby v0.23.1 h1:T/NKHUA+iVbHM440hFx+lzVOzS4dV6z8Qw8ai+72bYo= +github.com/tree-sitter/tree-sitter-ruby v0.23.1/go.mod h1:kUS4kCCQloFcdX6sdpr8p6r2rogbM6ZjTox5ZOQy8cA= +github.com/tree-sitter/tree-sitter-rust v0.23.2 h1:6AtoooCW5GqNrRpfnvl0iUhxTAZEovEmLKDbyHlfw90= +github.com/tree-sitter/tree-sitter-rust v0.23.2/go.mod h1:hfeGWic9BAfgTrc7Xf6FaOAguCFJRo3RBbs7QJ6D7MI= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From d3c87eb8b15ca71444906a9ce4908bec4a358c5e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 8 Feb 2026 08:52:51 +0000 Subject: [PATCH 18/29] ci: bump the actions group with 2 updates Bumps the actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [actions/upload-artifact](https://github.com/actions/upload-artifact). Updates `actions/checkout` from 4 to 6 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v6) Updates `actions/upload-artifact` from 4 to 6 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/upload-artifact dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f457ea9..0bbf6b9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up tree-sitter uses: tree-sitter/setup-action/cli@v2 - name: Run parser and binding tests @@ -43,7 +43,7 @@ jobs: with: files: examples/** - name: Upload failures artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 if: "!cancelled() && steps.parse-files.outcome == 'failure'" with: name: failures-${{runner.os}} @@ -53,7 +53,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 2 - name: Check for scanner changes From 127f2abf33509792b96a11a4d6202f41389087c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Mar 2026 11:58:58 +0000 Subject: [PATCH 19/29] ci: bump actions/upload-artifact from 6 to 7 in the actions group Bumps the actions group with 1 update: [actions/upload-artifact](https://github.com/actions/upload-artifact). Updates `actions/upload-artifact` from 6 to 7 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0bbf6b9..c5e9809 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,7 +43,7 @@ jobs: with: files: examples/** - name: Upload failures artifact - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 if: "!cancelled() && steps.parse-files.outcome == 'failure'" with: name: failures-${{runner.os}} From b6ca577bd352ec333fbfb81e3851d9202ab9ffa2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Mar 2026 11:59:19 +0000 Subject: [PATCH 20/29] build(deps): bump the npm group with 2 updates Bumps the npm group with 2 updates: [node-addon-api](https://github.com/nodejs/node-addon-api) and [tree-sitter-cli](https://github.com/tree-sitter/tree-sitter/tree/HEAD/crates/cli/npm). Updates `node-addon-api` from 8.5.0 to 8.6.0 - [Release notes](https://github.com/nodejs/node-addon-api/releases) - [Changelog](https://github.com/nodejs/node-addon-api/blob/main/CHANGELOG.md) - [Commits](https://github.com/nodejs/node-addon-api/compare/v8.5.0...v8.6.0) Updates `tree-sitter-cli` from 0.26.5 to 0.26.6 - [Release notes](https://github.com/tree-sitter/tree-sitter/releases) - [Commits](https://github.com/tree-sitter/tree-sitter/commits/v0.26.6/crates/cli/npm) --- updated-dependencies: - dependency-name: node-addon-api dependency-version: 8.6.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm - dependency-name: tree-sitter-cli dependency-version: 0.26.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm ... Signed-off-by: dependabot[bot] --- package-lock.json | 20 ++++++++++---------- package.json | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b2e493..b42d16a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,21 @@ { "name": "tree-sitter-dotenv", - "version": "0.0.1", + "version": "0.0.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "tree-sitter-dotenv", - "version": "0.0.1", + "version": "0.0.5", "hasInstallScript": true, "license": "MIT", "dependencies": { - "node-addon-api": "^8.0.0", + "node-addon-api": "^8.6.0", "node-gyp-build": "^4.8.1" }, "devDependencies": { "prebuildify": "^6.0.1", - "tree-sitter-cli": "^0.26.5" + "tree-sitter-cli": "^0.26.6" }, "peerDependencies": { "tree-sitter": "^0.21.1" @@ -167,9 +167,9 @@ } }, "node_modules/node-addon-api": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", - "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.6.0.tgz", + "integrity": "sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==", "license": "MIT", "engines": { "node": "^18 || ^20 || >= 21" @@ -338,9 +338,9 @@ } }, "node_modules/tree-sitter-cli": { - "version": "0.26.5", - "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.26.5.tgz", - "integrity": "sha512-joGY67M2XUVM+ZEs7vTYmSbiDgxtwbuMf1OdKk8q1Dd6wTlbhgtU/mr3j0krBgQs2Zwom6N7vxZaqoM85b79Mw==", + "version": "0.26.6", + "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.26.6.tgz", + "integrity": "sha512-aMC+NcvjGGAE63UNiaZLpcLwMT53tc6ikVLas5Edm+HmiM4NJ9wY05Nrug487gonGKdPz6e48zHsTnVEHAH1HA==", "dev": true, "hasInstallScript": true, "license": "MIT", diff --git a/package.json b/package.json index cd002a5..f7c6b80 100644 --- a/package.json +++ b/package.json @@ -22,12 +22,12 @@ "*.wasm" ], "dependencies": { - "node-addon-api": "^8.0.0", + "node-addon-api": "^8.6.0", "node-gyp-build": "^4.8.1" }, "devDependencies": { "prebuildify": "^6.0.1", - "tree-sitter-cli": "^0.26.5" + "tree-sitter-cli": "^0.26.6" }, "peerDependencies": { "tree-sitter": "^0.21.1" From 1be5c564598fb2f9e734296b49361fdb8546c95c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Mar 2026 11:59:41 +0000 Subject: [PATCH 21/29] build: regenerate parser [dependabot skip] --- src/tree_sitter/array.h | 57 +++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 37 deletions(-) diff --git a/src/tree_sitter/array.h b/src/tree_sitter/array.h index e99918e..56fc8cd 100644 --- a/src/tree_sitter/array.h +++ b/src/tree_sitter/array.h @@ -60,7 +60,13 @@ extern "C" { /// Free any memory allocated for this array. Note that this does not free any /// memory allocated for the array's contents. -#define array_delete(self) _array__delete((self), (void *)(self)->contents, sizeof(*self)) +#define array_delete(self) \ + do { \ + if ((self)->contents) ts_free((self)->contents); \ + (self)->contents = NULL; \ + (self)->size = 0; \ + (self)->capacity = 0; \ + } while (0) /// Push a new `element` onto the end of the array. #define array_push(self, element) \ @@ -130,12 +136,11 @@ extern "C" { /// Swap one array with another #define array_swap(self, other) \ do { \ - struct Swap swapped_contents = _array__swap( \ - (void *)(self)->contents, &(self)->size, &(self)->capacity, \ - (void *)(other)->contents, &(other)->size, &(other)->capacity \ - ); \ - (self)->contents = swapped_contents.self_contents; \ - (other)->contents = swapped_contents.other_contents; \ + void *_array_swap_tmp = (void *)(self)->contents; \ + (self)->contents = (other)->contents; \ + (other)->contents = _array_swap_tmp; \ + _array__swap(&(self)->size, &(self)->capacity, \ + &(other)->size, &(other)->capacity); \ } while (0) /// Get the size of the array contents @@ -188,12 +193,6 @@ extern "C" { // The `Array` type itself was not altered as a solution in order to avoid breakage // with existing consumers (in particular, parsers with external scanners). -/// This is not what you're looking for, see `array_delete`. -static inline void _array__delete(void *self, void *contents, size_t self_size) { - if (contents) ts_free(contents); - if (self) memset(self, 0, self_size); -} - /// This is not what you're looking for, see `array_erase`. static inline void _array__erase(void* self_contents, uint32_t *size, size_t element_size, uint32_t index) { @@ -228,31 +227,15 @@ static inline void *_array__assign(void* self_contents, uint32_t *self_size, uin return new_contents; } -struct Swap { - void *self_contents; - void *other_contents; -}; - /// This is not what you're looking for, see `array_swap`. -// static inline void _array__swap(Array *self, Array *other) { -static inline struct Swap _array__swap(void *self_contents, uint32_t *self_size, uint32_t *self_capacity, - void *other_contents, uint32_t *other_size, uint32_t *other_capacity) { - void *new_self_contents = other_contents; - uint32_t new_self_size = *other_size; - uint32_t new_self_capacity = *other_capacity; - - void *new_other_contents = self_contents; - *other_size = *self_size; - *other_capacity = *self_capacity; - - *self_size = new_self_size; - *self_capacity = new_self_capacity; - - struct Swap out = { - .self_contents = new_self_contents, - .other_contents = new_other_contents, - }; - return out; +static inline void _array__swap(uint32_t *self_size, uint32_t *self_capacity, + uint32_t *other_size, uint32_t *other_capacity) { + uint32_t tmp_size = *self_size; + uint32_t tmp_capacity = *self_capacity; + *self_size = *other_size; + *self_capacity = *other_capacity; + *other_size = tmp_size; + *other_capacity = tmp_capacity; } /// This is not what you're looking for, see `array_push` or `array_grow_by`. From e26c385655b5768a9075e0bdded033b01eb2d6ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 15 Mar 2026 11:52:38 +0000 Subject: [PATCH 22/29] build(deps): bump tree-sitter-cli from 0.26.6 to 0.26.7 in the npm group Bumps the npm group with 1 update: [tree-sitter-cli](https://github.com/tree-sitter/tree-sitter/tree/HEAD/crates/cli/npm). Updates `tree-sitter-cli` from 0.26.6 to 0.26.7 - [Release notes](https://github.com/tree-sitter/tree-sitter/releases) - [Commits](https://github.com/tree-sitter/tree-sitter/commits/v0.26.7/crates/cli/npm) --- updated-dependencies: - dependency-name: tree-sitter-cli dependency-version: 0.26.7 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index b42d16a..352c9b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ }, "devDependencies": { "prebuildify": "^6.0.1", - "tree-sitter-cli": "^0.26.6" + "tree-sitter-cli": "^0.26.7" }, "peerDependencies": { "tree-sitter": "^0.21.1" @@ -338,9 +338,9 @@ } }, "node_modules/tree-sitter-cli": { - "version": "0.26.6", - "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.26.6.tgz", - "integrity": "sha512-aMC+NcvjGGAE63UNiaZLpcLwMT53tc6ikVLas5Edm+HmiM4NJ9wY05Nrug487gonGKdPz6e48zHsTnVEHAH1HA==", + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.26.7.tgz", + "integrity": "sha512-fOg/DokJr/gW7suy9IypT1MQon28+JxOmtjudrT04rHRyqVJzrvakrojwyU8r0U6UNRsZKilb8VIhyarv2XUkQ==", "dev": true, "hasInstallScript": true, "license": "MIT", diff --git a/package.json b/package.json index f7c6b80..a799cd2 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ }, "devDependencies": { "prebuildify": "^6.0.1", - "tree-sitter-cli": "^0.26.6" + "tree-sitter-cli": "^0.26.7" }, "peerDependencies": { "tree-sitter": "^0.21.1" From 971995ce53c1eb936af1591528ef6203227da4b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Mar 2026 11:52:35 +0000 Subject: [PATCH 23/29] build(deps): bump node-addon-api from 8.6.0 to 8.7.0 in the npm group Bumps the npm group with 1 update: [node-addon-api](https://github.com/nodejs/node-addon-api). Updates `node-addon-api` from 8.6.0 to 8.7.0 - [Release notes](https://github.com/nodejs/node-addon-api/releases) - [Changelog](https://github.com/nodejs/node-addon-api/blob/main/CHANGELOG.md) - [Commits](https://github.com/nodejs/node-addon-api/compare/v8.6.0...v8.7.0) --- updated-dependencies: - dependency-name: node-addon-api dependency-version: 8.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 352c9b1..ad3af13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "node-addon-api": "^8.6.0", + "node-addon-api": "^8.7.0", "node-gyp-build": "^4.8.1" }, "devDependencies": { @@ -167,9 +167,9 @@ } }, "node_modules/node-addon-api": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.6.0.tgz", - "integrity": "sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.7.0.tgz", + "integrity": "sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==", "license": "MIT", "engines": { "node": "^18 || ^20 || >= 21" diff --git a/package.json b/package.json index a799cd2..b251be1 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "*.wasm" ], "dependencies": { - "node-addon-api": "^8.6.0", + "node-addon-api": "^8.7.0", "node-gyp-build": "^4.8.1" }, "devDependencies": { From f6408ef1f314f9c5fea9483b3ca2f9a529d0951d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 5 Apr 2026 11:52:45 +0000 Subject: [PATCH 24/29] build(deps): bump tree-sitter-cli from 0.26.7 to 0.26.8 in the npm group Bumps the npm group with 1 update: [tree-sitter-cli](https://github.com/tree-sitter/tree-sitter/tree/HEAD/crates/cli/npm). Updates `tree-sitter-cli` from 0.26.7 to 0.26.8 - [Release notes](https://github.com/tree-sitter/tree-sitter/releases) - [Commits](https://github.com/tree-sitter/tree-sitter/commits/v0.26.8/crates/cli/npm) --- updated-dependencies: - dependency-name: tree-sitter-cli dependency-version: 0.26.8 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index ad3af13..398daed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ }, "devDependencies": { "prebuildify": "^6.0.1", - "tree-sitter-cli": "^0.26.7" + "tree-sitter-cli": "^0.26.8" }, "peerDependencies": { "tree-sitter": "^0.21.1" @@ -338,9 +338,9 @@ } }, "node_modules/tree-sitter-cli": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.26.7.tgz", - "integrity": "sha512-fOg/DokJr/gW7suy9IypT1MQon28+JxOmtjudrT04rHRyqVJzrvakrojwyU8r0U6UNRsZKilb8VIhyarv2XUkQ==", + "version": "0.26.8", + "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.26.8.tgz", + "integrity": "sha512-teQFMF5V/g8aIdakZ0M/eZoedCM3MuBt1JuDOICLloA2hy7QfeOInb99U6wiML4qXcBHWREwf0U1TWzw7p67YA==", "dev": true, "hasInstallScript": true, "license": "MIT", diff --git a/package.json b/package.json index b251be1..8cb8555 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ }, "devDependencies": { "prebuildify": "^6.0.1", - "tree-sitter-cli": "^0.26.7" + "tree-sitter-cli": "^0.26.8" }, "peerDependencies": { "tree-sitter": "^0.21.1" From 6235e6afb50b4620b0cfb22102c2ce33c26bc89f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Apr 2026 11:52:56 +0000 Subject: [PATCH 25/29] build(deps): bump the pip group with 2 updates Updates the requirements on [tree-sitter](https://github.com/tree-sitter/py-tree-sitter) and [setuptools](https://github.com/pypa/setuptools) to permit the latest version. Updates `tree-sitter` to 0.25.2 - [Release notes](https://github.com/tree-sitter/py-tree-sitter/releases) - [Commits](https://github.com/tree-sitter/py-tree-sitter/compare/v0.24.0...v0.25.2) Updates `setuptools` to 82.0.1 - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v42.0.0...v82.0.1) --- updated-dependencies: - dependency-name: tree-sitter dependency-version: 0.25.2 dependency-type: direct:development dependency-group: pip - dependency-name: setuptools dependency-version: 82.0.1 dependency-type: direct:development dependency-group: pip ... Signed-off-by: dependabot[bot] --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 80f89cc..c4b8c67 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools>=42", "wheel"] +requires = ["setuptools>=82.0.1", "wheel"] build-backend = "setuptools.build_meta" [project] @@ -22,7 +22,7 @@ readme = "README.md" Homepage = "https://github.com/pnx/tree-sitter-dotenv" [project.optional-dependencies] -core = ["tree-sitter~=0.24"] +core = ["tree-sitter~=0.25"] [tool.cibuildwheel] build = "cp310-*" From 0114a48a2c87e914b73f1033281c2a196a22b92b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 13 Apr 2026 21:44:48 +0200 Subject: [PATCH 26/29] v0.0.6 --- CMakeLists.txt | 2 +- Cargo.toml | 2 +- Makefile | 2 +- package.json | 2 +- pyproject.toml | 2 +- tree-sitter.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 57de1c2..ebca42d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.13) project(tree-sitter-dotenv - VERSION "0.0.5" + VERSION "0.0.6" DESCRIPTION "Dotenv grammar for tree-sitter" HOMEPAGE_URL "https://github.com/pnx/tree-sitter-dotenv" LANGUAGES C) diff --git a/Cargo.toml b/Cargo.toml index 94df67d..7eb8616 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "tree-sitter-dotenv" description = "Dotenv grammar for tree-sitter" -version = "0.0.5" +version = "0.0.6" license = "MIT" readme = "README.md" keywords = ["incremental", "parsing", "tree-sitter", "dotenv"] diff --git a/Makefile b/Makefile index b20820e..ee6dd68 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ ifeq ($(OS),Windows_NT) $(error Windows is not supported) endif -VERSION := 0.0.5 +VERSION := 0.0.6 LANGUAGE_NAME := tree-sitter-dotenv diff --git a/package.json b/package.json index 8cb8555..fe107c8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tree-sitter-dotenv", - "version": "0.0.5", + "version": "0.0.6", "description": "Dotenv grammar for tree-sitter", "repository": "github:pnx/tree-sitter-dotenv", "license": "MIT", diff --git a/pyproject.toml b/pyproject.toml index c4b8c67..16762ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "tree-sitter-dotenv" description = "Dotenv grammar for tree-sitter" -version = "0.0.5" +version = "0.0.6" keywords = ["incremental", "parsing", "tree-sitter", "dotenv"] classifiers = [ "Intended Audience :: Developers", diff --git a/tree-sitter.json b/tree-sitter.json index 4597f2a..ff44669 100644 --- a/tree-sitter.json +++ b/tree-sitter.json @@ -15,7 +15,7 @@ } ], "metadata": { - "version": "0.0.5", + "version": "0.0.6", "license": "MIT", "description": "Dotenv grammar for tree-sitter", "authors": [ From 0bba6d68598fa77b64986540d625407b7e27d4e2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2026 10:29:43 +0200 Subject: [PATCH 27/29] v0.0.7 --- CMakeLists.txt | 2 +- Cargo.toml | 2 +- Makefile | 2 +- package.json | 2 +- pyproject.toml | 2 +- src/parser.c | 2 +- tree-sitter.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ebca42d..c4a2595 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.13) project(tree-sitter-dotenv - VERSION "0.0.6" + VERSION "0.0.7" DESCRIPTION "Dotenv grammar for tree-sitter" HOMEPAGE_URL "https://github.com/pnx/tree-sitter-dotenv" LANGUAGES C) diff --git a/Cargo.toml b/Cargo.toml index 7eb8616..627afe3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "tree-sitter-dotenv" description = "Dotenv grammar for tree-sitter" -version = "0.0.6" +version = "0.0.7" license = "MIT" readme = "README.md" keywords = ["incremental", "parsing", "tree-sitter", "dotenv"] diff --git a/Makefile b/Makefile index ee6dd68..1b39a1e 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ ifeq ($(OS),Windows_NT) $(error Windows is not supported) endif -VERSION := 0.0.6 +VERSION := 0.0.7 LANGUAGE_NAME := tree-sitter-dotenv diff --git a/package.json b/package.json index fe107c8..c9bf282 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tree-sitter-dotenv", - "version": "0.0.6", + "version": "0.0.7", "description": "Dotenv grammar for tree-sitter", "repository": "github:pnx/tree-sitter-dotenv", "license": "MIT", diff --git a/pyproject.toml b/pyproject.toml index 16762ae..38e28d9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta" [project] name = "tree-sitter-dotenv" description = "Dotenv grammar for tree-sitter" -version = "0.0.6" +version = "0.0.7" keywords = ["incremental", "parsing", "tree-sitter", "dotenv"] classifiers = [ "Intended Audience :: Developers", diff --git a/src/parser.c b/src/parser.c index b135b46..5fdbde1 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1018,7 +1018,7 @@ TS_PUBLIC const TSLanguage *tree_sitter_dotenv(void) { .metadata = { .major_version = 0, .minor_version = 0, - .patch_version = 5, + .patch_version = 7, }, }; return &language; diff --git a/tree-sitter.json b/tree-sitter.json index ff44669..6b7e928 100644 --- a/tree-sitter.json +++ b/tree-sitter.json @@ -15,7 +15,7 @@ } ], "metadata": { - "version": "0.0.6", + "version": "0.0.7", "license": "MIT", "description": "Dotenv grammar for tree-sitter", "authors": [ From bed97e448a70be12842e8c55672cbaf8dd5e5a39 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2026 22:52:33 +0200 Subject: [PATCH 28/29] queries/highlights.scm: minor style fixes --- queries/highlights.scm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/queries/highlights.scm b/queries/highlights.scm index 93793d4..adfac92 100644 --- a/queries/highlights.scm +++ b/queries/highlights.scm @@ -1,16 +1,16 @@ "=" @operator +(comment) @comment (boolean) @constant - (number) @number -(string) @string +[ + (string) + (value) +] @string [ (identifier) (variable) ] @variable -(value) @string - -(comment) @comment From dedd177c556427c124ab675578fdf90e71d83f82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 11:52:53 +0000 Subject: [PATCH 29/29] build(deps): bump the npm group with 2 updates Bumps the npm group with 2 updates: [node-addon-api](https://github.com/nodejs/node-addon-api) and [tree-sitter-cli](https://github.com/tree-sitter/tree-sitter/tree/HEAD/crates/cli/npm). Updates `node-addon-api` from 8.7.0 to 8.8.0 - [Release notes](https://github.com/nodejs/node-addon-api/releases) - [Changelog](https://github.com/nodejs/node-addon-api/blob/main/CHANGELOG.md) - [Commits](https://github.com/nodejs/node-addon-api/compare/v8.7.0...v8.8.0) Updates `tree-sitter-cli` from 0.26.8 to 0.26.9 - [Release notes](https://github.com/tree-sitter/tree-sitter/releases) - [Commits](https://github.com/tree-sitter/tree-sitter/commits/v0.26.9/crates/cli/npm) --- updated-dependencies: - dependency-name: node-addon-api dependency-version: 8.8.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm - dependency-name: tree-sitter-cli dependency-version: 0.26.9 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm ... Signed-off-by: dependabot[bot] --- package-lock.json | 20 ++++++++++---------- package.json | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 398daed..fea9761 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,21 @@ { "name": "tree-sitter-dotenv", - "version": "0.0.5", + "version": "0.0.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "tree-sitter-dotenv", - "version": "0.0.5", + "version": "0.0.7", "hasInstallScript": true, "license": "MIT", "dependencies": { - "node-addon-api": "^8.7.0", + "node-addon-api": "^8.8.0", "node-gyp-build": "^4.8.1" }, "devDependencies": { "prebuildify": "^6.0.1", - "tree-sitter-cli": "^0.26.8" + "tree-sitter-cli": "^0.26.9" }, "peerDependencies": { "tree-sitter": "^0.21.1" @@ -167,9 +167,9 @@ } }, "node_modules/node-addon-api": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.7.0.tgz", - "integrity": "sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.8.0.tgz", + "integrity": "sha512-c5Ko1fZJIJmzhFIkhRN76WTq+fC6tWnGy9CXA0fA+XygsWZmEwG8vmbkNqxMyoaa0Tin4djul49NzdVcJJcjeA==", "license": "MIT", "engines": { "node": "^18 || ^20 || >= 21" @@ -338,9 +338,9 @@ } }, "node_modules/tree-sitter-cli": { - "version": "0.26.8", - "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.26.8.tgz", - "integrity": "sha512-teQFMF5V/g8aIdakZ0M/eZoedCM3MuBt1JuDOICLloA2hy7QfeOInb99U6wiML4qXcBHWREwf0U1TWzw7p67YA==", + "version": "0.26.9", + "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.26.9.tgz", + "integrity": "sha512-7l+U1RmazPVe+yA/JiX80GFOILnL/j24GbawamIzNQC8UlINrcyECbaWGaG1wuq4j/m0DQTx7Uu4r0iW9Ao1BQ==", "dev": true, "hasInstallScript": true, "license": "MIT", diff --git a/package.json b/package.json index c9bf282..ea16b6e 100644 --- a/package.json +++ b/package.json @@ -22,12 +22,12 @@ "*.wasm" ], "dependencies": { - "node-addon-api": "^8.7.0", + "node-addon-api": "^8.8.0", "node-gyp-build": "^4.8.1" }, "devDependencies": { "prebuildify": "^6.0.1", - "tree-sitter-cli": "^0.26.8" + "tree-sitter-cli": "^0.26.9" }, "peerDependencies": { "tree-sitter": "^0.21.1"