diff --git a/antlr/build.gradle b/antlr/build.gradle new file mode 100644 index 0000000..5cc4a3d --- /dev/null +++ b/antlr/build.gradle @@ -0,0 +1,19 @@ +plugins { + id 'antlr' +} + +dependencies { + implementation rootProject + + testImplementation group: "net.woggioni", name: "jwo", version: getProperty('version.jwo') + testImplementation project(':test-utils') + testImplementation group: "com.fasterxml.jackson.core", name:"jackson-databind", version: getProperty('version.jackson') + testImplementation group: "org.tukaani", name: "xz", version: getProperty('version.xz') + antlr group: "org.antlr", name: "antlr4", version: getProperty('version.antlr') + antlr group: "org.antlr", name: "antlr4-runtime", version: getProperty('version.antlr') +} + +generateGrammarSource { + maxHeapSize = "64m" + arguments += ['-package', 'net.woggioni.wson.antlr'] +} diff --git a/antlr/src/main/antlr4/JSON.g4 b/antlr/src/main/antlr/net/woggioni/wson/antlr/JSON.g4 similarity index 100% rename from antlr/src/main/antlr4/JSON.g4 rename to antlr/src/main/antlr/net/woggioni/wson/antlr/JSON.g4 diff --git a/antlr/src/test/java/net/woggioni/wson/serialization/json/PerformanceTest.java b/antlr/src/test/java/net/woggioni/wson/serialization/json/PerformanceTest.java index 671d72b..38c1025 100644 --- a/antlr/src/test/java/net/woggioni/wson/serialization/json/PerformanceTest.java +++ b/antlr/src/test/java/net/woggioni/wson/serialization/json/PerformanceTest.java @@ -55,7 +55,7 @@ public class PerformanceTest { @Test @SneakyThrows public void loopTest() { - double jacksonTime, worthTime, antlrTime; + double jacksonTime, wsonTime, antlrTime; final int loops = 100; Chronometer chr = new Chronometer(); { @@ -76,8 +76,8 @@ public class PerformanceTest { Value value = new JSONParser().parse(smallTestData()); } } - worthTime = chr.elapsed(Chronometer.UnitOfMeasure.MILLISECONDS); - System.out.printf("Worth time: %8s msec\n", String.format("%.3f", worthTime)); + wsonTime = chr.elapsed(Chronometer.UnitOfMeasure.MILLISECONDS); + System.out.printf("Worth time: %8s msec\n", String.format("%.3f", wsonTime)); } { for(int j = 0; j < 2; j++) { diff --git a/benchmark/build.gradle b/benchmark/build.gradle new file mode 100644 index 0000000..8970f02 --- /dev/null +++ b/benchmark/build.gradle @@ -0,0 +1,23 @@ +plugins { + id 'application' +} + +application { + mainClassName = 'net.woggioni.wson.benchmark.Main' + applicationDefaultJvmArgs = ['-Xmx8G'] +} + +run { + commandLine +} + +dependencies { + implementation rootProject + implementation project(':antlr') + implementation group: "net.woggioni", name: "jwo", version: getProperty('version.jwo') + implementation group: 'org.tukaani', name: 'xz', version: getProperty('version.xz') + implementation group: 'com.beust', name: 'jcommander', version: getProperty('version.jcommander') + implementation group: "com.fasterxml.jackson.core", name: "jackson-databind", version: getProperty('version.jackson') + + runtimeOnly project(':test-utils') +} diff --git a/benchmark/build.sbt b/benchmark/build.sbt deleted file mode 100644 index 5864845..0000000 --- a/benchmark/build.sbt +++ /dev/null @@ -1,13 +0,0 @@ -organization := (organization in LocalRootProject).value -name := "worth-benchmark" -version := (version in LocalRootProject).value -resourceDirectory in Compile := (resourceDirectory in(LocalRootProject, Test)).value -skip in publish := true -maintainer := "oggioni.walter@gmail.com" -mainClass := Some("net.woggioni.worth.benchmark.Main") -javaOptions in Universal += "-J-Xmx4G" -fork := true -libraryDependencies += "com.fasterxml.jackson.core" % "jackson-databind" % Versions.jackson -libraryDependencies += "org.tukaani" % "xz" % Versions.xz -libraryDependencies += "com.beust" % "jcommander" % Versions.jcommander -libraryDependencies += "org.projectlombok" % "lombok" % Versions.lombok % Provided diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..7a52e30 --- /dev/null +++ b/build.gradle @@ -0,0 +1,79 @@ +plugins { + id 'maven-publish' +} + +allprojects { + apply plugin: 'java-library' + group = "net.woggioni" + version = getProperty('version.wson') + + repositories { + maven { + url = "https://woggioni.net/mvn/" + } + mavenCentral() + } + + dependencies { + ['', 'test'].each {sourceSetName -> + ['compileOnly', 'annotationProcessor'].each { configurationSuffix -> + String configurationName + if(sourceSetName) configurationName = sourceSetName + configurationSuffix.capitalize() + else configurationName = configurationSuffix + add(configurationName, [group: "org.projectlombok", name: "lombok", version: getProperty('version.lombok')]) + } + } + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: getProperty('version.junit.jupiter') + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: getProperty('version.junit.jupiter') + testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: getProperty('version.junit.jupiter') + } + + test { + useJUnitPlatform() + } +} + +subprojects { + tasks.named('jar', Jar) { + archiveBaseName = "wson-${project.name}" + } +} + +dependencies { + implementation group: "net.woggioni", name: "jwo", version: getProperty('version.jwo') + implementation group: "org.slf4j", name: "slf4j-api", version: getProperty('version.slf4j') + + testImplementation project('test-utils') + testImplementation group: "com.fasterxml.jackson.core", name: "jackson-databind", version: getProperty('version.jackson') +} + +compileJava { + options.release = 8 +} + +jar { + manifest{ + attributes([ + "Automatic-Module-Name": "net.woggioni.wson" + ]) + } +} + +wrapper { + distributionType = Wrapper.DistributionType.BIN + gradleVersion = "7.0.2" +} + + +publishing { + repositories { + maven { + url = "https://mvn.woggioni.net/" + } + } + publications { + maven(MavenPublication) { + from(components["java"]) + } + } +} diff --git a/build.sbt b/build.sbt deleted file mode 100644 index 4858aa2..0000000 --- a/build.sbt +++ /dev/null @@ -1,66 +0,0 @@ -import sbt.Keys.libraryDependencies - -name := "wson" - -organization := "net.woggioni" - -maintainer := "oggioni.walter@gmail.com" - -version := "1.0" -resolvers += Resolver.mavenLocal - -crossPaths := false - -autoScalaLibrary := false - -scalacOptions ++= Seq( - "-unchecked", - "-deprecation", - "-language:_", - "-opt:l:inline", "-opt-inline-from", - "-target:jvm-1.8", - "-encoding", "UTF-8" -) - -git.useGitDescribe := true -//javaOptions in Test += "-Xmx14G" -javacOptions in (Compile, compile) ++= Seq("--release", "8") -//scalafmtOnCompile := true -libraryDependencies += "org.projectlombok" % "lombok" % Versions.lombok % Provided -libraryDependencies += "net.woggioni" % "jwo" % "1.0" % Compile - -Compile / packageBin / packageOptions += - Package.ManifestAttributes("Automatic-Module-Name" -> "net.woggioni.wson") - -libraryDependencies += "net.aichler" % "jupiter-interface" % JupiterKeys.jupiterVersion.value % Test -libraryDependencies += "org.junit.jupiter" % "junit-jupiter-params" % JupiterKeys.junitJupiterVersion.value % Test -libraryDependencies += "com.fasterxml.jackson.core" % "jackson-databind" % Versions.jackson % Test -libraryDependencies += "org.tukaani" % "xz" % Versions.xz % Test - -enablePlugins(Delombok) -enablePlugins(DelombokJavadoc) -enablePlugins(JupiterPlugin) - -testOptions += Tests.Argument(jupiterTestFramework, "-q", "-a") - -lazy val testUtils = (project in file("test-utils")) - -dependsOn(testUtils % "test") - -lazy val worthAntlr = (project in file("antlr")) - .dependsOn(LocalRootProject) - .dependsOn(testUtils % "test") - .enablePlugins(Antlr4Plugin) - -lazy val cli = (project in file("cli")) - .dependsOn(LocalRootProject) - .enablePlugins(JavaAppPackaging) - .enablePlugins(UniversalPlugin) - .enablePlugins(JlinkPlugin) - -lazy val benchmark = (project in file("benchmark")) - .dependsOn(LocalRootProject) - .dependsOn(worthAntlr) - .dependsOn(testUtils) - .enablePlugins(JavaAppPackaging) - .enablePlugins(UniversalPlugin) diff --git a/cli/build.gradle b/cli/build.gradle new file mode 100644 index 0000000..a5b8cbc --- /dev/null +++ b/cli/build.gradle @@ -0,0 +1,15 @@ +plugins { + id 'application' + id 'org.jetbrains.kotlin.jvm' +} + +dependencies { + implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: getProperty('version.kotlin') + implementation group: 'com.beust', name: 'jcommander', version: getProperty('version.jcommander') + implementation group: "org.slf4j", name: "slf4j-simple", version: getProperty('version.slf4j') + implementation rootProject +} + +application { + mainClassName = 'net.woggioni.wson.cli.MainKt' +} diff --git a/cli/build.sbt b/cli/build.sbt deleted file mode 100644 index 431107e..0000000 --- a/cli/build.sbt +++ /dev/null @@ -1,8 +0,0 @@ -organization := (organization in LocalRootProject).value -name := "worth-cli" -version := (version in LocalRootProject).value -resourceDirectory := (resourceDirectory in(LocalRootProject, Test)).value -skip in publish := true -mainClass := Some("net.woggioni.worth.cli.Main") -maintainer := "oggioni.walter@gmail.com" -libraryDependencies += "com.beust" % "jcommander" % Versions.jcommander diff --git a/cli/src/main/kotlin/net/woggioni/wson/cli/main.kt b/cli/src/main/kotlin/net/woggioni/wson/cli/main.kt new file mode 100644 index 0000000..99fa8fb --- /dev/null +++ b/cli/src/main/kotlin/net/woggioni/wson/cli/main.kt @@ -0,0 +1,128 @@ +package net.woggioni.wson.cli + +import com.beust.jcommander.IStringConverter +import com.beust.jcommander.JCommander +import com.beust.jcommander.Parameter +import com.beust.jcommander.ParameterException +import com.beust.jcommander.converters.PathConverter +import kotlin.system.exitProcess +import net.woggioni.wson.serialization.binary.JBONDumper +import net.woggioni.wson.serialization.binary.JBONParser +import net.woggioni.wson.serialization.json.JSONDumper +import net.woggioni.wson.serialization.json.JSONParser +import net.woggioni.wson.xface.Value +import java.io.BufferedInputStream +import java.io.BufferedOutputStream +import java.io.InputStreamReader +import java.io.OutputStreamWriter +import java.nio.file.Files +import java.nio.file.Path + + +sealed class SerializationFormat(val name: String) { + override fun toString() = name + + object JSON : SerializationFormat("json") + object JBON : SerializationFormat("jbon") + + companion object { + fun parse(value: String) = when (value) { + JBON.name -> JBON + JSON.name -> JSON + else -> { + val availableValues = sequenceOf( + JSON, + JBON + ).map(SerializationFormat::name).joinToString(", ") + throw IllegalArgumentException( + "Unknown serialization format '$value', possible values are $availableValues") + } + } + } +} + +private class OutputTypeConverter : IStringConverter { + override fun convert(value: String): SerializationFormat = SerializationFormat.parse(value) +} + +private class CliArg { + + @Parameter(names = ["-f", "--file"], description = "Name of the input file to parse", converter = PathConverter::class) + var fileName: Path? = null + + @Parameter(names = ["--input-type"], description = "Input type", converter = OutputTypeConverter::class) + var inputType: SerializationFormat = SerializationFormat.JSON + + @Parameter(names = ["-o", "--output"], description = "Name of the JSON file to generate", converter = PathConverter::class) + var output: Path? = null + + @Parameter(names = ["-t", "--type"], description = "Output type", converter = OutputTypeConverter::class) + var outputType: SerializationFormat = SerializationFormat.JSON + + @Parameter(names = ["-h", "--help"], help = true) + var help: Boolean = false +} + +fun main(vararg args: String) { + val cliArg = CliArg() + val cliArgumentParser = JCommander.newBuilder() + .addObject(cliArg) + .build() + try { + cliArgumentParser.parse(*args) + } catch (pe: ParameterException) { + cliArgumentParser.usage() + exitProcess(-1) + } + if (cliArg.help) { + cliArgumentParser.usage() + exitProcess(0) + } + val cfg = Value.Configuration.builder().serializeReferences(true).build() + val inputStream = if (cliArg.fileName != null) { + BufferedInputStream(Files.newInputStream(cliArg.fileName)) + } else { + System.`in` + } + + val result = when(cliArg.inputType) { + SerializationFormat.JSON -> { + val reader = InputStreamReader(inputStream) + try { + JSONParser(cfg).parse(reader) + } finally { + reader.close() + } + } + SerializationFormat.JBON -> { + try { + JBONParser(cfg).parse(inputStream) + } finally { + inputStream.close() + } + } + } + + val outputStream = if (cliArg.output != null) { + BufferedOutputStream(Files.newOutputStream(cliArg.output)) + } else { + System.out + } + when(cliArg.outputType) { + SerializationFormat.JSON -> { + val writer = OutputStreamWriter(outputStream) + try { + JSONDumper(cfg).dump(result, writer) + } finally { + writer.close() + } + } + SerializationFormat.JBON -> { + try { + JBONDumper(cfg).dump(result, outputStream) + } finally { + outputStream.close() + } + } + } +} \ No newline at end of file diff --git a/cli/src/main/scala/net/woggioni/wson/cli/Main.scala b/cli/src/main/scala/net/woggioni/wson/cli/Main.scala deleted file mode 100644 index 1aa0450..0000000 --- a/cli/src/main/scala/net/woggioni/wson/cli/Main.scala +++ /dev/null @@ -1,126 +0,0 @@ -package net.woggioni.wson.cli - -import java.io._ - -import com.beust.jcommander.{IStringConverter, JCommander, Parameter, ParameterException} -import net.woggioni.wson.serialization.binary.{JBONDumper, JBONParser} -import net.woggioni.wson.serialization.json.{JSONDumper, JSONParser} -import net.woggioni.wson.xface.Value - -sealed abstract class SerializationFormat(val name : String) { - override def toString = name -} - -object SerializationFormat { - case object JSON extends SerializationFormat("json") - case object JBON extends SerializationFormat("jbon") - - def parse(value : String) : SerializationFormat = { - value match { - case JBON.name => JBON - case JSON.name => JSON - case _ => { - val arr = Stream( - SerializationFormat.JSON, - SerializationFormat.JBON - ).map(_.name).toArray - val availableValues = String.join(", ", arr :_*) - throw new IllegalArgumentException( - s"Unknown serialization format '$value', possible values are $availableValues") - } - } - } -} - -class OutputTypeConverter extends IStringConverter[SerializationFormat] { - override def convert(value: String): SerializationFormat = SerializationFormat.parse(value) -} - -class CliArg { - - @Parameter(names = Array("-f", "--file"), description = "Name of the .cz file to parse") - var fileName : String = _ - - @Parameter(names = Array("--input-type"), description = "Input type", converter = classOf[OutputTypeConverter]) - var inputType : SerializationFormat = SerializationFormat.JSON - - @Parameter(names = Array("-o", "--output"), description = "Name of the JSON file to generate") - var outPut : String = _ - - @Parameter(names = Array("-t", "--type"), description = "Output type", converter = classOf[OutputTypeConverter]) - var outputType : SerializationFormat = SerializationFormat.JSON - - @Parameter(names = Array("-h", "--help"), help = true) - var help : Boolean = _ -} - - -object Main { - - def main(argv : Array[String]): Unit = { - val cliArg = new CliArg - val cliArgumentParser = JCommander.newBuilder() - .addObject(cliArg) - .build() - try { - cliArgumentParser.parse(argv :_*) - } catch { - case _ : ParameterException => { - cliArgumentParser.usage() - System.exit(-1) - } - case e : Throwable => throw e - } - if(cliArg.help) { - cliArgumentParser.usage() - System.exit(0) - } - val cfg = Value.Configuration.builder().serializeReferences(true).build() - val inputStream = if(cliArg.fileName != null) { - new BufferedInputStream(new FileInputStream(cliArg.fileName)) - } else { - System.in - } - - val result = cliArg.inputType match { - case SerializationFormat.JSON => { - val reader = new InputStreamReader(inputStream) - try { - new JSONParser(cfg).parse(reader) - } finally { - reader.close() - } - } - case SerializationFormat.JBON => { - try { - new JBONParser(cfg).parse(inputStream) - } finally { - inputStream.close() - } - } - } - - val outputStream = if(cliArg.outPut != null) { - new BufferedOutputStream(new FileOutputStream(cliArg.outPut)) - } else { - System.out - } - cliArg.outputType match { - case SerializationFormat.JSON => { - val writer = new OutputStreamWriter(outputStream) - try { - new JSONDumper(cfg).dump(result, writer) - } finally { - writer.close() - } - } - case SerializationFormat.JBON => { - try { - new JBONDumper(cfg).dump(result, outputStream) - } finally { - outputStream.close() - } - } - } - } -} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..e6dee09 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,10 @@ +version.wson = 1.0 +version.jwo = 1.0 +version.junit.jupiter = 5.7.0 +version.lombok = 1.18.16 +version.slf4j = 1.7.30 +version.jackson = 2.12.3 +version.jcommander = 1.81 +version.antlr = 4.9.2 +version.xz = 1.8 +version.kotlin=1.5.10 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e708b1c Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..0f80bbf --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/project/build.properties b/project/build.properties deleted file mode 100644 index 08e4d79..0000000 --- a/project/build.properties +++ /dev/null @@ -1 +0,0 @@ -sbt.version=1.4.1 diff --git a/project/build.scala b/project/build.scala deleted file mode 100644 index 7acafd7..0000000 --- a/project/build.scala +++ /dev/null @@ -1,11 +0,0 @@ -object Versions { - val slf4j = "1.7.30" - val log4j = "2.13.2" - val lombok = "1.18.16" - val junitJupiter = "5.6.2" - val junitPlatform = "1.6.2" - val jackson = "2.11.3" - val jcommander = "1.78" - val antlr = "4.7.2" - val xz = "1.8" -} \ No newline at end of file diff --git a/project/plugins.sbt b/project/plugins.sbt deleted file mode 100644 index b2275b2..0000000 --- a/project/plugins.sbt +++ /dev/null @@ -1,12 +0,0 @@ -//addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "4.0.2") -addSbtPlugin("com.dwijnand" % "sbt-travisci" % "1.1.1") -addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.1.0") -addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.15") -//addSbtPlugin("com.geirsson" % "sbt-scalafmt" % "1.5.1") -addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "0.9.3") -addSbtPlugin("de.heikoseeberger" % "sbt-header" % "4.1.0") -addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.3") -addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.7.6") -addSbtPlugin("com.simplytyped" % "sbt-antlr4" % "0.8.1") -addSbtPlugin("net.aichler" % "sbt-jupiter-interface" % "0.8.4-SNAPSHOT") -addSbtPlugin("com.thoughtworks.sbt" % "delombokjavadoc" % "1.0.0+66-8fbcf18c") diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..05e269a --- /dev/null +++ b/settings.gradle @@ -0,0 +1,17 @@ +pluginManagement { + repositories { + gradlePluginPortal() + } + + plugins { + id 'org.jetbrains.kotlin.jvm' version getProperty('version.kotlin') + } +} + +rootProject.name = 'wson' + +def includeDirs = ['antlr', 'benchmark', 'test-utils', 'cli'] + +includeDirs.each { + include(it) +} diff --git a/test-utils/build.sbt b/test-utils/build.sbt deleted file mode 100644 index 531bbac..0000000 --- a/test-utils/build.sbt +++ /dev/null @@ -1,4 +0,0 @@ -organization := (organization in LocalRootProject).value -name := "test-utils" -version := (version in LocalRootProject).value -skip in publish := true