apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'eclipse'

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

mainClassName = 'org.asamk.signal.Main'

version = '0.6.11'

compileJava.options.encoding = 'UTF-8'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    implementation 'com.github.turasa:signal-service-java:2.15.3_unofficial_14'
    implementation 'org.bouncycastle:bcprov-jdk15on:1.66'
    implementation 'net.sourceforge.argparse4j:argparse4j:0.8.1'
    implementation 'com.github.hypfvieh:dbus-java:3.2.3'
    implementation 'org.slf4j:slf4j-nop: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
                    }
                }
            }
        }
    }
}
