+++ /dev/null
-plugins {
- id "java"
- id "application"
- id "eclipse"
-}
-
-sourceCompatibility = JavaVersion.VERSION_11
-targetCompatibility = JavaVersion.VERSION_11
-
-mainClassName = "org.asamk.signal.Main"
-
-version = "0.7.4"
-
-compileJava.options.encoding = "UTF-8"
-
-repositories {
- mavenLocal()
- mavenCentral()
-}
-
-dependencies {
- implementation("com.google.protobuf:protobuf-javalite:3.10.0")
- implementation("com.github.turasa:signal-service-java:2.15.3_unofficial_18")
- implementation("org.bouncycastle:bcprov-jdk15on:1.68")
- implementation("net.sourceforge.argparse4j:argparse4j:0.8.1")
- implementation("com.github.hypfvieh:dbus-java:3.2.4")
- implementation("org.slf4j:slf4j-simple:1.7.30")
-}
-
-jar {
- manifest {
- attributes(
- "Implementation-Title": project.name,
- "Implementation-Version": project.version,
- "Main-Class": project.mainClassName,
- )
- }
-}
-
-run {
- if (project.hasProperty("appArgs")) {
- // allow passing command-line arguments to the main application e.g.:
- // $ gradle run -PappArgs="['-u', '+...', 'daemon', '--json']"
- args(Eval.me(appArgs))
- }
-}
-
-// Find any 3rd party libraries which have released new versions
-// to the central Maven repo since we last upgraded.
-task checkLibVersions {
- doLast {
- def checked = [:]
- allprojects {
- configurations.each { configuration ->
- configuration.allDependencies.each { dependency ->
- def version = dependency.version
- if (!checked[dependency]) {
- def group = dependency.group
- def path = group.replace(".", "/")
- def name = dependency.name
- def url = "https://repo1.maven.org/maven2/$path/$name/maven-metadata.xml"
- try {
- def metadata = new XmlSlurper().parseText(url.toURL().text)
- def newest = metadata.versioning.latest;
- if ("$version" != "$newest") {
- println("UPGRADE {\"group\": \"$group\", \"name\": \"$name\", \"current\": \"$version\", \"latest\": \"$newest\"}")
- }
- } catch (FileNotFoundException e) {
- logger.debug("Unable to download $url: $e.message")
- } catch (org.xml.sax.SAXParseException e) {
- logger.debug("Unable to parse $url: $e.message")
- }
- checked[dependency] = true
- }
- }
- }
- }
- }
-}
-
-task assembleNativeImage {
- dependsOn("assemble")
- doLast {
- def graalVMHome = System.getenv("GRAALVM_HOME")
- if (!graalVMHome) {
- throw new GradleException("Required GRAALVM_HOME environment variable not set.")
- }
- def nativeBinaryOutputPath = "$buildDir/native-image"
- def nativeBinaryName = "signal-cli"
-
- mkdir(nativeBinaryOutputPath)
-
- exec {
- workingDir = "."
- commandLine("$graalVMHome/bin/native-image",
- "-H:Path=$nativeBinaryOutputPath",
- "-H:Name=$nativeBinaryName",
- "-H:JNIConfigurationFiles=graalvm-config-dir/jni-config.json",
- "-H:DynamicProxyConfigurationFiles=graalvm-config-dir/proxy-config.json",
- "-H:ResourceConfigurationFiles=graalvm-config-dir/resource-config.json",
- "-H:ReflectionConfigurationFiles=graalvm-config-dir/reflect-config.json",
- "--no-fallback",
- "--allow-incomplete-classpath",
- "--report-unsupported-elements-at-runtime",
- "--enable-url-protocols=http,https",
- "--enable-https",
- "--enable-all-security-services",
- "-cp",
- sourceSets.main.runtimeClasspath.asPath,
- project.mainClassName)
- }
- }
-}
--- /dev/null
+plugins {
+ java
+ application
+ eclipse
+}
+
+version = "0.7.4"
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+}
+
+application {
+ mainClass.set("org.asamk.signal.Main")
+}
+
+repositories {
+ mavenLocal()
+ mavenCentral()
+}
+
+dependencies {
+ implementation("com.google.protobuf:protobuf-javalite:3.10.0")
+ implementation("com.github.turasa:signal-service-java:2.15.3_unofficial_18")
+ implementation("org.bouncycastle:bcprov-jdk15on:1.68")
+ implementation("net.sourceforge.argparse4j:argparse4j:0.8.1")
+ implementation("com.github.hypfvieh:dbus-java:3.2.4")
+ implementation("org.slf4j:slf4j-simple:1.7.30")
+}
+
+configurations {
+ implementation {
+ resolutionStrategy.failOnVersionConflict()
+ }
+}
+
+tasks.withType<JavaCompile> {
+ options.encoding = "UTF-8"
+}
+
+tasks.withType<Jar> {
+ manifest {
+ attributes(
+ "Implementation-Title" to project.name,
+ "Implementation-Version" to project.version,
+ "Main-Class" to application.mainClass.get()
+ )
+ }
+}
+
+tasks.withType<JavaExec> {
+ val appArgs: String? by project
+ if (appArgs != null) {
+ // allow passing command-line arguments to the main application e.g.:
+ // $ gradle run -PappArgs="['-u', '+...', 'daemon', '--json']"
+ args = groovy.util.Eval.me(appArgs) as MutableList<String>
+ }
+}
+
+// Find any 3rd party libraries which have released new versions
+// to the central Maven repo since we last upgraded.
+val checkLibVersions by tasks.registering {
+ doLast {
+ val checked = kotlin.collections.HashSet<Dependency>()
+ allprojects {
+ configurations.forEach { configuration ->
+ configuration.allDependencies.forEach { dependency ->
+ val version = dependency.version
+ if (!checked.contains(dependency)) {
+ val group = dependency.group
+ val path = group?.replace(".", "/") ?: ""
+ val name = dependency.name
+ val metaDataUrl = "https://repo1.maven.org/maven2/$path/$name/maven-metadata.xml"
+ try {
+ val url = org.codehaus.groovy.runtime.ResourceGroovyMethods.toURL(metaDataUrl)
+ val metaDataText = org.codehaus.groovy.runtime.ResourceGroovyMethods.getText(url)
+ val metadata = groovy.util.XmlSlurper().parseText(metaDataText)
+ val newest = (metadata.getProperty("versioning") as groovy.util.slurpersupport.GPathResult).getProperty("latest")
+ if (version != newest.toString()) {
+ println("UPGRADE {\"group\": \"$group\", \"name\": \"$name\", \"current\": \"$version\", \"latest\": \"$newest\"}")
+ }
+ } catch (e: Throwable) {
+ logger.debug("Unable to download or parse $metaDataUrl: $e.message")
+ }
+ checked.add(dependency)
+ }
+ }
+ }
+ }
+ }
+}
+
+val assembleNativeImage by tasks.registering {
+ dependsOn("assemble")
+
+ var graalVMHome = ""
+ doFirst {
+ graalVMHome = System.getenv("GRAALVM_HOME")
+ ?: throw GradleException("Required GRAALVM_HOME environment variable not set.")
+ }
+
+ doLast {
+ val nativeBinaryOutputPath = "$buildDir/native-image"
+ val nativeBinaryName = "signal-cli"
+
+ mkdir(nativeBinaryOutputPath)
+
+ exec {
+ workingDir = File(".")
+ commandLine("$graalVMHome/bin/native-image",
+ "-H:Path=$nativeBinaryOutputPath",
+ "-H:Name=$nativeBinaryName",
+ "-H:JNIConfigurationFiles=graalvm-config-dir/jni-config.json",
+ "-H:DynamicProxyConfigurationFiles=graalvm-config-dir/proxy-config.json",
+ "-H:ResourceConfigurationFiles=graalvm-config-dir/resource-config.json",
+ "-H:ReflectionConfigurationFiles=graalvm-config-dir/reflect-config.json",
+ "--no-fallback",
+ "--allow-incomplete-classpath",
+ "--report-unsupported-elements-at-runtime",
+ "--enable-url-protocols=http,https",
+ "--enable-https",
+ "--enable-all-security-services",
+ "-cp",
+ sourceSets.main.get().runtimeClasspath.asPath,
+ application.mainClass.get())
+ }
+ }
+}