diff --git a/README.md b/README.md index 4a69180..20eb1c6 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ Next generation Tree Sitter Java binding. [![Maven Central](https://img.shields.io/github/actions/workflow/status/bonede/tree-sitter-ng/main.yml)](https://github.com/bonede/tree-sitter-ng/actions) - [![Maven Central](https://img.shields.io/maven-central/v/io.github.bonede/tree-sitter)](https://central.sonatype.com/artifact/io.github.bonede/tree-sitter) # Getting started @@ -12,7 +11,7 @@ Add dependencies to your `build.gradle` or `pom.xml`. // Gradle dependencies { // add tree sitter - implementation 'io.github.bonede:tree-sitter:0.22.1' + implementation 'io.github.bonede:tree-sitter:0.22.2' // add json parser implementation 'io.github.bonede:tree-sitter-json:0.20.1' } @@ -25,7 +24,7 @@ dependencies { io.github.bonede tree-sitter - 0.22.1 + 0.22.2 @@ -126,6 +125,8 @@ class Main { | `io.github.bonede:tree-sitter-markdown:0.7.1` | ![Maven Central](https://img.shields.io/maven-central/v/io.github.bonede/tree-sitter-markdown) | | `io.github.bonede:tree-sitter-meson:1.2` | ![Maven Central](https://img.shields.io/maven-central/v/io.github.bonede/tree-sitter-meson) | | `io.github.bonede:tree-sitter-nix:master` | ![Maven Central](https://img.shields.io/maven-central/v/io.github.bonede/tree-sitter-nix) | +| `io.github.bonede:tree-sitter-nginx:main` | ![Maven Central](https://img.shields.io/maven-central/v/io.github.bonede/tree-sitter-nginx) | +| `io.github.bonede:tree-sitter-nim:0.5.0` | ![Maven Central](https://img.shields.io/maven-central/v/io.github.bonede/tree-sitter-nim) | | `io.github.bonede:tree-sitter-objc:main` | ![Maven Central](https://img.shields.io/maven-central/v/io.github.bonede/tree-sitter-objc) | | `io.github.bonede:tree-sitter-ocaml:0.20.4` | ![Maven Central](https://img.shields.io/maven-central/v/io.github.bonede/tree-sitter-ocaml) | | `io.github.bonede:tree-sitter-ohm:main` | ![Maven Central](https://img.shields.io/maven-central/v/io.github.bonede/tree-sitter-ohm) | diff --git a/settings.gradle b/settings.gradle index db528e2..94c9f18 100644 --- a/settings.gradle +++ b/settings.gradle @@ -116,3 +116,5 @@ include 'tree-sitter-zig' include 'tree-sitter-tact' include 'tree-sitter-ohm' include 'tree-sitter-p4' +include 'tree-sitter-nginx' +include 'tree-sitter-nim' diff --git a/tree-sitter-nginx/build.gradle b/tree-sitter-nginx/build.gradle new file mode 100644 index 0000000..f2d9f10 --- /dev/null +++ b/tree-sitter-nginx/build.gradle @@ -0,0 +1,154 @@ + + +import org.treesitter.build.Utils + +plugins { + id 'java' + id 'signing' + id 'maven-publish' +} + +group = 'io.github.bonede' +version = libVersion + +repositories { + mavenCentral() +} + +dependencies { + testImplementation platform('org.junit:junit-bom:5.9.1') + testImplementation 'org.junit.jupiter:junit-jupiter' + implementation project(":tree-sitter") +} + +test { + useJUnitPlatform() +} +def libName = "tree-sitter-nginx" + + +java { + withJavadocJar() + withSourcesJar() +} + +publishing { + repositories { + maven { + name = "MavenCentral" + def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" + def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/" + credentials { + username = ossrhUsername + password = ossrhPassword + } + url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl + } + } + publications { + maven(MavenPublication) { + from components.java + pom { + name = libName + url = 'https://github.com/bonede/tree-sitter-ng' + description = "Next generation Tree Sitter Java binding" + licenses { + license { + name = 'MIT' + } + } + scm { + connection = 'scm:git:https://github.com/bonede/tree-sitter-ng.git' + developerConnection = 'scm:git:https://github.com/bonede/tree-sitter-ng.git' + url = 'https://github.com/bonede/tree-sitter-ng' + } + developers { + developer { + id = 'bonede' + name = 'Wang Liang' + email = 'bonede@qq.com' + } + } + } + } + } +} + + +signing { + sign configurations.archives + sign publishing.publications +} +tasks.register('downloadSource') { + group = "build setup" + description = "Download parser source" + def zipUrl = "https://gitlab.com/joncoole/tree-sitter-nginx/-/archive/main/tree-sitter-nginx-main.zip" + def downloadDir = Utils.libDownloadDir(project, libName) + def zip = Utils.libZipFile(project, libName, libVersion) + def parserCFile = Utils.libParserCFile(project, libName, libVersion) + inputs.files(layout.projectDirectory.file("gradle.properties")) + outputs.files(parserCFile) + doLast { + download.run { + src zipUrl + dest zip + overwrite false + } + copy { + from zipTree(zip) + into downloadDir + } + } + +} + +tasks.register("buildNative") { + group = "build" + description = "Build parser native modules" + dependsOn "downloadSource", rootProject.bootstrap + def jniSrcDir = Utils.jniSrcDir(project) + def outDir = Utils.jniOutDir(project) + def jniCFile = Utils.jniCFile(project, "org_treesitter_TreeSitterNginx.c") + def parserCFile = Utils.libParserCFile(project, libName, libVersion) + def scannerCFile = Utils.libScannerCFile(project, libName, libVersion) + def libSrcDir = Utils.libSrcDir(project, libName, libVersion) + def jniInclude = Utils.jniIncludeDir(project) + + def targets = Utils.treeSitterTargets(project) + def outputFiles = targets.collect() + { t -> Utils.jniOutFile(project, t, libName)} + def srcFiles = project.fileTree(libSrcDir) { + include(Utils.libFiles()) + }.toList() + outputs.files(outputFiles) + def inputFiles = srcFiles + [parserCFile, rootProject.layout.projectDirectory.file("gradle.properties")] + inputs.files(inputFiles) + doLast{ + mkdir(outDir) + targets.each {target -> + def jniMdInclude = Utils.jniMdInclude(project, target) + def jniOutFile = Utils.jniOutFile(project, target, libName) + def files = project.fileTree(libSrcDir) { + include(Utils.libFiles()) + }.toList() + def cmd = [ + rootProject.downloadZig.zigExe, "c++", + "-g0", + "-shared", + "-target", target, + "-I", libSrcDir, + "-I", jniInclude, + "-I", jniMdInclude, + "-o", jniOutFile, + jniCFile, + ] + + cmd.addAll(files) + exec{ + workingDir jniSrcDir + commandLine(cmd) + } + } + Utils.removeWindowsDebugFiles(project) + } +} diff --git a/tree-sitter-nginx/gradle.properties b/tree-sitter-nginx/gradle.properties new file mode 100644 index 0000000..a00b371 --- /dev/null +++ b/tree-sitter-nginx/gradle.properties @@ -0,0 +1 @@ +libVersion=main \ No newline at end of file diff --git a/tree-sitter-nginx/src/main/c/org_treesitter_TreeSitterNginx.c b/tree-sitter-nginx/src/main/c/org_treesitter_TreeSitterNginx.c new file mode 100644 index 0000000..8bf205a --- /dev/null +++ b/tree-sitter-nginx/src/main/c/org_treesitter_TreeSitterNginx.c @@ -0,0 +1,12 @@ + +#include +void *tree_sitter_nginx(); +/* + * Class: org_treesitter_TreeSitterNginx + * Method: tree_sitter_nginx + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_treesitter_TreeSitterNginx_tree_1sitter_1nginx + (JNIEnv *env, jclass clz){ + return (jlong) tree_sitter_nginx(); +} diff --git a/tree-sitter-nginx/src/main/java/org/treesitter/TreeSitterNginx.java b/tree-sitter-nginx/src/main/java/org/treesitter/TreeSitterNginx.java new file mode 100644 index 0000000..f695cba --- /dev/null +++ b/tree-sitter-nginx/src/main/java/org/treesitter/TreeSitterNginx.java @@ -0,0 +1,23 @@ + +package org.treesitter; + +import org.treesitter.utils.NativeUtils; + +public class TreeSitterNginx implements TSLanguage { + + static { + NativeUtils.loadLib("lib/tree-sitter-nginx"); + } + private native static long tree_sitter_nginx(); + + private final long ptr; + + public TreeSitterNginx() { + ptr = tree_sitter_nginx(); + } + + @Override + public long getPtr() { + return ptr; + } +} diff --git a/tree-sitter-nginx/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nginx.so b/tree-sitter-nginx/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nginx.so new file mode 100644 index 0000000..0eb3dd2 Binary files /dev/null and b/tree-sitter-nginx/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nginx.so differ diff --git a/tree-sitter-nginx/src/main/resources/lib/aarch64-macos-tree-sitter-nginx.dylib b/tree-sitter-nginx/src/main/resources/lib/aarch64-macos-tree-sitter-nginx.dylib new file mode 100644 index 0000000..9d920a6 Binary files /dev/null and b/tree-sitter-nginx/src/main/resources/lib/aarch64-macos-tree-sitter-nginx.dylib differ diff --git a/tree-sitter-nginx/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nginx.so b/tree-sitter-nginx/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nginx.so new file mode 100644 index 0000000..c859f74 Binary files /dev/null and b/tree-sitter-nginx/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nginx.so differ diff --git a/tree-sitter-nginx/src/main/resources/lib/x86_64-macos-tree-sitter-nginx.dylib b/tree-sitter-nginx/src/main/resources/lib/x86_64-macos-tree-sitter-nginx.dylib new file mode 100644 index 0000000..e8c836e Binary files /dev/null and b/tree-sitter-nginx/src/main/resources/lib/x86_64-macos-tree-sitter-nginx.dylib differ diff --git a/tree-sitter-nginx/src/main/resources/lib/x86_64-windows-tree-sitter-nginx.dll b/tree-sitter-nginx/src/main/resources/lib/x86_64-windows-tree-sitter-nginx.dll new file mode 100644 index 0000000..6f68b1a Binary files /dev/null and b/tree-sitter-nginx/src/main/resources/lib/x86_64-windows-tree-sitter-nginx.dll differ diff --git a/tree-sitter-nginx/src/test/java/org/treesitter/TreeSitterNginxTest.java b/tree-sitter-nginx/src/test/java/org/treesitter/TreeSitterNginxTest.java new file mode 100644 index 0000000..cbb33b7 --- /dev/null +++ b/tree-sitter-nginx/src/test/java/org/treesitter/TreeSitterNginxTest.java @@ -0,0 +1,11 @@ + +package org.treesitter; + +import org.junit.jupiter.api.Test; + +class TreeSitterNginxTest { + @Test + void init() { + new TreeSitterNginx(); + } +} diff --git a/tree-sitter-nim/build.gradle b/tree-sitter-nim/build.gradle new file mode 100644 index 0000000..1e760d3 --- /dev/null +++ b/tree-sitter-nim/build.gradle @@ -0,0 +1,154 @@ + + +import org.treesitter.build.Utils + +plugins { + id 'java' + id 'signing' + id 'maven-publish' +} + +group = 'io.github.bonede' +version = libVersion + +repositories { + mavenCentral() +} + +dependencies { + testImplementation platform('org.junit:junit-bom:5.9.1') + testImplementation 'org.junit.jupiter:junit-jupiter' + implementation project(":tree-sitter") +} + +test { + useJUnitPlatform() +} +def libName = "tree-sitter-nim" + + +java { + withJavadocJar() + withSourcesJar() +} + +publishing { + repositories { + maven { + name = "MavenCentral" + def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" + def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/" + credentials { + username = ossrhUsername + password = ossrhPassword + } + url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl + } + } + publications { + maven(MavenPublication) { + from components.java + pom { + name = libName + url = 'https://github.com/bonede/tree-sitter-ng' + description = "Next generation Tree Sitter Java binding" + licenses { + license { + name = 'MIT' + } + } + scm { + connection = 'scm:git:https://github.com/bonede/tree-sitter-ng.git' + developerConnection = 'scm:git:https://github.com/bonede/tree-sitter-ng.git' + url = 'https://github.com/bonede/tree-sitter-ng' + } + developers { + developer { + id = 'bonede' + name = 'Wang Liang' + email = 'bonede@qq.com' + } + } + } + } + } +} + + +signing { + sign configurations.archives + sign publishing.publications +} +tasks.register('downloadSource') { + group = "build setup" + description = "Download parser source" + def zipUrl = "https://codeload.github.com/alaviss/tree-sitter-nim/zip/refs/tags/0.5.0" + def downloadDir = Utils.libDownloadDir(project, libName) + def zip = Utils.libZipFile(project, libName, libVersion) + def parserCFile = Utils.libParserCFile(project, libName, libVersion) + inputs.files(layout.projectDirectory.file("gradle.properties")) + outputs.files(parserCFile) + doLast { + download.run { + src zipUrl + dest zip + overwrite false + } + copy { + from zipTree(zip) + into downloadDir + } + } + +} + +tasks.register("buildNative") { + group = "build" + description = "Build parser native modules" + dependsOn "downloadSource", rootProject.bootstrap + def jniSrcDir = Utils.jniSrcDir(project) + def outDir = Utils.jniOutDir(project) + def jniCFile = Utils.jniCFile(project, "org_treesitter_TreeSitterNim.c") + def parserCFile = Utils.libParserCFile(project, libName, libVersion) + def scannerCFile = Utils.libScannerCFile(project, libName, libVersion) + def libSrcDir = Utils.libSrcDir(project, libName, libVersion) + def jniInclude = Utils.jniIncludeDir(project) + + def targets = Utils.treeSitterTargets(project) + def outputFiles = targets.collect() + { t -> Utils.jniOutFile(project, t, libName)} + def srcFiles = project.fileTree(libSrcDir) { + include(Utils.libFiles()) + }.toList() + outputs.files(outputFiles) + def inputFiles = srcFiles + [parserCFile, rootProject.layout.projectDirectory.file("gradle.properties")] + inputs.files(inputFiles) + doLast{ + mkdir(outDir) + targets.each {target -> + def jniMdInclude = Utils.jniMdInclude(project, target) + def jniOutFile = Utils.jniOutFile(project, target, libName) + def files = project.fileTree(libSrcDir) { + include(Utils.libFiles()) + }.toList() + def cmd = [ + rootProject.downloadZig.zigExe, "c++", + "-g0", + "-shared", + "-target", target, + "-I", libSrcDir, + "-I", jniInclude, + "-I", jniMdInclude, + "-o", jniOutFile, + jniCFile, + ] + + cmd.addAll(files) + exec{ + workingDir jniSrcDir + commandLine(cmd) + } + } + Utils.removeWindowsDebugFiles(project) + } +} diff --git a/tree-sitter-nim/gradle.properties b/tree-sitter-nim/gradle.properties new file mode 100644 index 0000000..8c6a965 --- /dev/null +++ b/tree-sitter-nim/gradle.properties @@ -0,0 +1 @@ +libVersion=0.5.0 \ No newline at end of file diff --git a/tree-sitter-nim/src/main/c/org_treesitter_TreeSitterNim.c b/tree-sitter-nim/src/main/c/org_treesitter_TreeSitterNim.c new file mode 100644 index 0000000..4e1914b --- /dev/null +++ b/tree-sitter-nim/src/main/c/org_treesitter_TreeSitterNim.c @@ -0,0 +1,12 @@ + +#include +void *tree_sitter_nim(); +/* + * Class: org_treesitter_TreeSitterNim + * Method: tree_sitter_nim + * Signature: ()J + */ +JNIEXPORT jlong JNICALL Java_org_treesitter_TreeSitterNim_tree_1sitter_1nim + (JNIEnv *env, jclass clz){ + return (jlong) tree_sitter_nim(); +} diff --git a/tree-sitter-nim/src/main/java/org/treesitter/TreeSitterNim.java b/tree-sitter-nim/src/main/java/org/treesitter/TreeSitterNim.java new file mode 100644 index 0000000..4ee2834 --- /dev/null +++ b/tree-sitter-nim/src/main/java/org/treesitter/TreeSitterNim.java @@ -0,0 +1,23 @@ + +package org.treesitter; + +import org.treesitter.utils.NativeUtils; + +public class TreeSitterNim implements TSLanguage { + + static { + NativeUtils.loadLib("lib/tree-sitter-nim"); + } + private native static long tree_sitter_nim(); + + private final long ptr; + + public TreeSitterNim() { + ptr = tree_sitter_nim(); + } + + @Override + public long getPtr() { + return ptr; + } +} diff --git a/tree-sitter-nim/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nim.so b/tree-sitter-nim/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nim.so new file mode 100644 index 0000000..0acfbf7 Binary files /dev/null and b/tree-sitter-nim/src/main/resources/lib/aarch64-linux-gnu-tree-sitter-nim.so differ diff --git a/tree-sitter-nim/src/main/resources/lib/aarch64-macos-tree-sitter-nim.dylib b/tree-sitter-nim/src/main/resources/lib/aarch64-macos-tree-sitter-nim.dylib new file mode 100644 index 0000000..404252e Binary files /dev/null and b/tree-sitter-nim/src/main/resources/lib/aarch64-macos-tree-sitter-nim.dylib differ diff --git a/tree-sitter-nim/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nim.so b/tree-sitter-nim/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nim.so new file mode 100644 index 0000000..cc351aa Binary files /dev/null and b/tree-sitter-nim/src/main/resources/lib/x86_64-linux-gnu-tree-sitter-nim.so differ diff --git a/tree-sitter-nim/src/main/resources/lib/x86_64-macos-tree-sitter-nim.dylib b/tree-sitter-nim/src/main/resources/lib/x86_64-macos-tree-sitter-nim.dylib new file mode 100644 index 0000000..d63fc98 Binary files /dev/null and b/tree-sitter-nim/src/main/resources/lib/x86_64-macos-tree-sitter-nim.dylib differ diff --git a/tree-sitter-nim/src/main/resources/lib/x86_64-windows-tree-sitter-nim.dll b/tree-sitter-nim/src/main/resources/lib/x86_64-windows-tree-sitter-nim.dll new file mode 100644 index 0000000..7628e1f Binary files /dev/null and b/tree-sitter-nim/src/main/resources/lib/x86_64-windows-tree-sitter-nim.dll differ diff --git a/tree-sitter-nim/src/test/java/org/treesitter/TreeSitterNimTest.java b/tree-sitter-nim/src/test/java/org/treesitter/TreeSitterNimTest.java new file mode 100644 index 0000000..ee54f60 --- /dev/null +++ b/tree-sitter-nim/src/test/java/org/treesitter/TreeSitterNimTest.java @@ -0,0 +1,11 @@ + +package org.treesitter; + +import org.junit.jupiter.api.Test; + +class TreeSitterNimTest { + @Test + void init() { + new TreeSitterNim(); + } +} diff --git a/tree-sitter/gradle.properties b/tree-sitter/gradle.properties index f000aa1..43d7c4a 100644 --- a/tree-sitter/gradle.properties +++ b/tree-sitter/gradle.properties @@ -1 +1 @@ -treesitterVersion=0.22.1 \ No newline at end of file +treesitterVersion=0.22.2 \ No newline at end of file diff --git a/tree-sitter/src/main/resources/lib/aarch64-linux-gnu-tree-sitter.so b/tree-sitter/src/main/resources/lib/aarch64-linux-gnu-tree-sitter.so index b7ef302..2785d9f 100644 Binary files a/tree-sitter/src/main/resources/lib/aarch64-linux-gnu-tree-sitter.so and b/tree-sitter/src/main/resources/lib/aarch64-linux-gnu-tree-sitter.so differ diff --git a/tree-sitter/src/main/resources/lib/aarch64-macos-tree-sitter.dylib b/tree-sitter/src/main/resources/lib/aarch64-macos-tree-sitter.dylib index c7bd974..045b867 100644 Binary files a/tree-sitter/src/main/resources/lib/aarch64-macos-tree-sitter.dylib and b/tree-sitter/src/main/resources/lib/aarch64-macos-tree-sitter.dylib differ diff --git a/tree-sitter/src/main/resources/lib/x86_64-linux-gnu-tree-sitter.so b/tree-sitter/src/main/resources/lib/x86_64-linux-gnu-tree-sitter.so index 17fa6fd..67fcdc9 100644 Binary files a/tree-sitter/src/main/resources/lib/x86_64-linux-gnu-tree-sitter.so and b/tree-sitter/src/main/resources/lib/x86_64-linux-gnu-tree-sitter.so differ diff --git a/tree-sitter/src/main/resources/lib/x86_64-macos-tree-sitter.dylib b/tree-sitter/src/main/resources/lib/x86_64-macos-tree-sitter.dylib index 0dd6dc4..b5956d4 100644 Binary files a/tree-sitter/src/main/resources/lib/x86_64-macos-tree-sitter.dylib and b/tree-sitter/src/main/resources/lib/x86_64-macos-tree-sitter.dylib differ diff --git a/tree-sitter/src/main/resources/lib/x86_64-windows-tree-sitter.dll b/tree-sitter/src/main/resources/lib/x86_64-windows-tree-sitter.dll index 1a0f29f..a4911c8 100644 Binary files a/tree-sitter/src/main/resources/lib/x86_64-windows-tree-sitter.dll and b/tree-sitter/src/main/resources/lib/x86_64-windows-tree-sitter.dll differ