diff --git a/.cargo/config.toml b/.cargo/config.toml
deleted file mode 100644
index b7dd3e1..0000000
--- a/.cargo/config.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[target.x86_64-unknown-linux-gnu]
-linker = "x86_64-unknown-linux-gnu-gcc"
-[target.x86_64-unknown-linux-musl]
-linker = "x86_64-linux-musl-gcc"
-[target.x86_64-pc-windows-gnu]
-linker = "x86_64-w64-mingw32-gcc"
-ar = "x86_64-w64-mingw32-gcc-ar"
\ No newline at end of file
diff --git a/.github/workflows/prql-java-test.yaml b/.github/workflows/prql-java-test.yaml
index 07a4f51..9e05b14 100644
--- a/.github/workflows/prql-java-test.yaml
+++ b/.github/workflows/prql-java-test.yaml
@@ -1,13 +1,16 @@
name: prql-java-test
+
on:
+ push:
pull_request:
types: [ opened, reopened, synchronize, labeled ]
- push:
- branches:
- - main
+
jobs:
- ubuntu-test:
- runs-on: ubuntu-latest
+ junit-test:
+ strategy:
+ matrix:
+ os: [ ubuntu-latest, macOS-latest ]
+ runs-on: ${{matrix.os}}
steps:
- name: Checkout code
uses: actions/checkout@v3
@@ -18,8 +21,4 @@ jobs:
override: true
default: true
- name: Maven test
- run: cd ./java-api && ./mvnw test
-# macos-test:
-# runs-on: macos-latest
-# windows-test:
-# runs-on: windows-latest
+ run: cd ./java/ && ./mvnw test
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
new file mode 100644
index 0000000..2b43593
--- /dev/null
+++ b/.github/workflows/release.yaml
@@ -0,0 +1,24 @@
+name: release
+on:
+ push:
+ release:
+ type: [published]
+
+jobs:
+ publish-to-maven:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v3
+ - name: Install Java and Maven
+ uses: actions/setup-java@v1
+ with:
+ java-version: 8
+ - name: Release Maven package
+ uses: samuelmeuli/action-maven-publish@v1
+ with:
+ gpg_private_key: ${{ secrets.gpg_private_key }}
+ gpg_passphrase: ${{ secrets.gpg_passphrase }}
+ nexus_username: ${{ secrets.nexus_username }}
+ nexus_password: ${{ secrets.nexus_password }}
+ directory: java/
diff --git a/.gitignore b/.gitignore
index 1c6f542..8979908 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,4 +26,4 @@ Cargo.lock
target
-java-api/src/main/resources/libprql4j*
\ No newline at end of file
+**/libprql4j*
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..2472486
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "cross-toolchains"]
+ path = cross-toolchains
+ url = https://github.com/cross-rs/cross-toolchains.git
diff --git a/Cross.toml b/Cross.toml
new file mode 100644
index 0000000..1972f84
--- /dev/null
+++ b/Cross.toml
@@ -0,0 +1,4 @@
+[target.x86_64-apple-darwin.dockerfile]
+file = "./cross-toolchains/docker/Dockerfile.x86_64-apple-darwin-cross"
+[target.aarch64-apple-darwin.dockerfile]
+file = "./cross-toolchains/docker/Dockerfile.aarch64-apple-darwin-cross"
\ No newline at end of file
diff --git a/cross-toolchains b/cross-toolchains
new file mode 160000
index 0000000..9685bc3
--- /dev/null
+++ b/cross-toolchains
@@ -0,0 +1 @@
+Subproject commit 9685bc36ade526d8a6db5a569929cc28e7121748
diff --git a/cross.sh b/cross.sh
new file mode 100755
index 0000000..8ab28f0
--- /dev/null
+++ b/cross.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+PROJECT_DIR=$1
+echo PROJECT_DIR="${PROJECT_DIR}"
+CONTEXT_PATH=$(pwd)
+echo CONTEXT_PATH="${CONTEXT_PATH}"
+cd "${PROJECT_DIR}" || exit 1
+
+# install cross
+cargo install cross
+
+# x86_64-unknown-linux-gnu
+echo "compiling for x86_64-unknown-linux-gnu"
+rustup target add x86_64-unknown-linux-gnu
+cross build --release --target x86_64-unknown-linux-gnu
+ls -la target/x86_64-unknown-linux-gnu/release
+cp -f target/x86_64-unknown-linux-gnu/release/libprql4j.so java/src/main/resources/libprql4j-linux64.so
+
+# x86_64-apple-darwin
+echo "compiling for x86_64-apple-darwin"
+rustup target add x86_64-apple-darwin
+cross build --release --target x86_64-apple-darwin
+ls -la target/x86_64-apple-darwin/release
+cp target/x86_64-apple-darwin/release/libprql4j.dylib java/src/main/resources/libprql4j-osx-x86_64.dylib
+
+# x86_64-pc-windows-gnu
+echo "compiling for x86_64-pc-windows-gnu"
+rustup target add x86_64-pc-windows-gnu
+cross build --release --target x86_64-pc-windows-gnu
+ls -la target/x86_64-pc-windows-gnu/release
+cp -f target/x86_64-pc-windows-gnu/release/prql4j.dll java/src/main/resources/libprql4j-win64.dll
+
+# aarch64-unknown-linux-gnu
+echo "compiling for aarch64-unknown-linux-gnu"
+rustup target add aarch64-unknown-linux-gnu
+cross build --release --target aarch64-unknown-linux-gnu
+ls -la target/x86_64-unknown-linux-gnu/release
+cp -f target/x86_64-unknown-linux-gnu/release/libprql4j.so java/src/main/resources/libprql4j-linux-aarch64.so
+
+# aarch64-apple-darwin
+echo "compiling for aarch64-apple-darwin"
+rustup target add aarch64-apple-darwin
+cross build --release --target aarch64-apple-darwin
+ls -la target/x86_64-apple-darwin/release
+cp -f target/x86_64-apple-darwin/release/libprql4j.dylib java/src/main/resources/libprql4j-osx-arm64.dylib
+
+# x86_64-unknown-linux-musl
+echo "compiling for x86_64-unknown-linux-musl"
+rustup target add x86_64-unknown-linux-musl
+cross rustc --release --target x86_64-unknown-linux-musl -- --crate-type=dylib
+ls -la target/x86_64-unknown-linux-musl/release
+cp target/x86_64-unknown-linux-musl/release/libprql4j.so java/src/main/resources/libprql4j-linux64-musl.so
+
+# aarch64-unknown-linux-musl
+echo "compiling for aarch64-unknown-linux-musl"
+rustup target add aarch64-unknown-linux-musl
+cross rustc --release --target aarch64-unknown-linux-musl -- --crate-type=dylib
+ls -la target/aarch64-unknown-linux-musl/release
+cp -f target/aarch64-unknown-linux-musl/release/libprql4j.so java/src/main/resources/libprql4j-linux-aarch64-musl.so
+
+
+cd "${CONTEXT_PATH}" || exit 1
\ No newline at end of file
diff --git a/java-api/native_lib_build.sh b/java-api/native_lib_build.sh
deleted file mode 100755
index a3fb9bd..0000000
--- a/java-api/native_lib_build.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash
-set -e
-
-echo "start cross compilations"
-
-cd ..
-
-echo "compile target=x86_64-unknown-linux-gnu"
-rustup target add x86_64-unknown-linux-gnu
-cargo build --release --target=x86_64-unknown-linux-gnu
-cp -f target/x86_64-unknown-linux-gnu/release/libprql4j.so java-api/src/main/resources/libprql4j-linux64.so
-
-echo "compile target=aarch64-unknown-linux-gnu"
-rustup target add aarch64-unknown-linux-gnu
-cargo build --release --target=aarch64-unknown-linux-gnu
-cp -f target/aarch64-unknown-linux-gnu/release/libprql4j.so java-api/src/main/resources/libprql4j-linux-aarch64.so
-
-echo "compile target=x86_64-apple-darwin"
-rustup target add x86_64-apple-darwin
-cargo build --release --target=x86_64-apple-darwin
-cp -f target/x86_64-apple-darwin/release/libprql4j.dylib java-api/src/main/resources/libprql4j-osx-x86_64.dylib
-
-echo "compile target=aarch64-apple-darwin"
-rustup target add aarch64-apple-darwin
-cargo build --release --target=aarch64-apple-darwin
-cp -f target/aarch64-apple-darwin/release/libprql4j.dylib java-api/src/main/resources/libprql4j-osx-arm64.dylib
-
-echo "compile target=x86_64-pc-windows-gnu"
-rustup target add x86_64-pc-windows-gnu
-cargo build --release --target=x86_64-pc-windows-gnu
-cp -f target/x86_64-pc-windows-gnu/release/prql4j.dll java-api/src/main/resources/libprql4j-win64.dll
\ No newline at end of file
diff --git a/java-api/pom.xml b/java-api/pom.xml
deleted file mode 100644
index b464f74..0000000
--- a/java-api/pom.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
- 4.0.0
-
- org.doki23
- prql-java
- 1.0-SNAPSHOT
-
-
- 1.8
- 1.8
-
-
-
-
- junit
- junit
- 4.13.2
- test
-
-
-
-
-
-
- exec-maven-plugin
- org.codehaus.mojo
- 1.6.0
-
-
- Run Script
- initialize
-
- exec
-
-
- native_lib_build.sh
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/java-api/.mvn/wrapper/maven-wrapper.jar b/java/.mvn/wrapper/maven-wrapper.jar
similarity index 100%
rename from java-api/.mvn/wrapper/maven-wrapper.jar
rename to java/.mvn/wrapper/maven-wrapper.jar
diff --git a/java-api/.mvn/wrapper/maven-wrapper.properties b/java/.mvn/wrapper/maven-wrapper.properties
similarity index 100%
rename from java-api/.mvn/wrapper/maven-wrapper.properties
rename to java/.mvn/wrapper/maven-wrapper.properties
diff --git a/java-api/mvnw b/java/mvnw
similarity index 100%
rename from java-api/mvnw
rename to java/mvnw
diff --git a/java-api/mvnw.cmd b/java/mvnw.cmd
similarity index 100%
rename from java-api/mvnw.cmd
rename to java/mvnw.cmd
diff --git a/java/pom.xml b/java/pom.xml
new file mode 100644
index 0000000..ec8acc7
--- /dev/null
+++ b/java/pom.xml
@@ -0,0 +1,171 @@
+
+
+
+
+ 4.0.0
+
+ io.github.doki23
+ prql-java
+ 0.0.3
+
+ ${project.groupId}:${project.artifactId}
+ prql compiler api for java
+ https://github.com/doki23/prql-java
+
+
+
+ The Apache License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+
+
+
+
+
+ Jie Han
+ tunyum94@gmail.com
+
+
+
+
+ scm:git:git://github.com/doki23/prql-java.git
+ scm:git:ssh://github.com:doki23/prql-java.git
+ http://github.com/simpligility/ossrh-demo/tree/master
+
+
+
+ 1.8
+ 1.8
+
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+
+
+
+ exec-maven-plugin
+ org.codehaus.mojo
+ 1.6.0
+
+
+ Build for release
+ generate-resources
+
+ exec
+
+
+ ../cross.sh
+
+ ${project.basedir}/../
+
+
+
+
+
+
+
+ org.sonatype.plugins
+ nexus-staging-maven-plugin
+ 1.6.13
+ true
+
+ ossrh
+ https://s01.oss.sonatype.org/
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 1.5
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+ --pinentry-mode
+ loopback
+
+
+
+
+
+
+
+ maven-source-plugin
+ 3.1.0
+
+
+ attach-source
+ compile
+
+ jar-no-fork
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.0.1
+
+
+ attach-javadocs
+
+ jar
+
+
+
+
+
+
+
+
+
+ deploy-snapshot
+
+
+ sonatype-nexus-snapshots
+ Sonatype Nexus Snapshots
+ https://s01.oss.sonatype.org/content/repositories/snapshots
+
+
+
+
+ deploy
+
+
+ sonatype-nexus-staging
+ Nexus Release Repository
+ https://s01.oss.sonatype.org/service/local/staging/deploy/maven2
+
+
+
+
+
\ No newline at end of file
diff --git a/java-api/src/main/java/org/doki23/prql4j/Environment.java b/java/src/main/java/org/doki23/prql4j/Environment.java
similarity index 100%
rename from java-api/src/main/java/org/doki23/prql4j/Environment.java
rename to java/src/main/java/org/doki23/prql4j/Environment.java
diff --git a/java-api/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java b/java/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java
similarity index 96%
rename from java-api/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java
rename to java/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java
index 7cbd9f9..d2f86ea 100644
--- a/java-api/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java
+++ b/java/src/main/java/org/doki23/prql4j/NativeLibraryLoader.java
@@ -125,9 +125,4 @@ File loadLibraryFromJarToTemp(final String tmpDir)
private NativeLibraryLoader() {
}
-
- public static void main(String[] args) {
- NativeLibraryLoader loader = NativeLibraryLoader.getInstance();
- System.out.println(loader);
- }
}
diff --git a/java-api/src/main/java/org/doki23/prql4j/PrqlCompiler.java b/java/src/main/java/org/doki23/prql4j/PrqlCompiler.java
similarity index 100%
rename from java-api/src/main/java/org/doki23/prql4j/PrqlCompiler.java
rename to java/src/main/java/org/doki23/prql4j/PrqlCompiler.java
diff --git a/java/src/main/resources/.gitkeep b/java/src/main/resources/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/java-api/src/test/java/org/doki23/prql4j/PrqlCompilerTest.java b/java/src/test/java/org/doki23/prql4j/PrqlCompilerTest.java
similarity index 100%
rename from java-api/src/test/java/org/doki23/prql4j/PrqlCompilerTest.java
rename to java/src/test/java/org/doki23/prql4j/PrqlCompilerTest.java