/*
 * SPDX-License-Identifier: Apache-2.0
 *
 * Copyright 2020-2021 The JReleaser 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.
 */
plugins {
    id 'com.github.johnrengelman.shadow'
    id 'application'
}

mainClassName = 'org.jreleaser.tool.JReleaser'

config {
    docs {
        javadoc {
            empty = true
        }
    }
}

configurations {
    uberjar
}

dependencies {
    uberjar project(':jreleaser')

    compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}"
    annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}"
}

sourceSets {
    main {
        compileClasspath += configurations.uberjar
        runtimeClasspath += compileClasspath
    }
}

idea {
    module {
        scopes.PROVIDED.plus += [configurations.uberjar]
    }
}

shadowJar {
    configurations    = [project.configurations.uberjar]
    archiveBaseName   = project.name
    archiveClassifier = ''
    mergeServiceFiles()
    exclude 'module-info.class'
    exclude '**/module-info.class'
    exclude 'META-INF/maven/**'
    exclude 'META-INF/plexus/**'
    exclude 'META-INF/m2e/**'
    exclude 'plugin.xml'
}

task relocateShadowJar(type: com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation) {
    target = tasks.shadowJar
    prefix = 'jreleaser.shadow'
}

tasks.shadowJar.dependsOn tasks.relocateShadowJar

jar.finalizedBy shadowJar

tasks.withType(JavaCompile) { JavaCompile c ->
    c.sourceCompatibility = JavaVersion.VERSION_1_9
    c.targetCompatibility = JavaVersion.VERSION_1_9
}

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(9)
    }
}

task versionFile {
    doLast {
        project.layout.buildDirectory.file('VERSION').get().asFile.text = project.version
    }
}

classes.dependsOn(versionFile)