/*
 *  Licensed to the Apache Software Foundation (ASF) under one
 *  or more contributor license agreements.  See the NOTICE file
 *  distributed with this work for additional information
 *  regarding copyright ownership.  The ASF licenses this file
 *  to you 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.
 */

buildscript {
    repositories {
        maven { url "https://repo.grails.org/grails/restricted" }
    }
    dependencies {
        classpath "org.apache.grails:grails-gradle-plugins:$grailsGradlePluginVersion"
        classpath "org.apache.grails.gradle:grails-gson:$viewsJsonVersion"
        classpath "org.apache.grails:grails-docs-core:${project.ext.properties.grailsDocsVersion ?: grailsVersion}"
    }
}

repositories {
    mavenCentral()
    maven { url "https://repo.grails.org/grails/restricted" }
}

version project.projectVersion

ext {
    commonBuild = 'https://raw.githubusercontent.com/grails/grails-common-build/v2.0.1'
}

subprojects {

    version project.projectVersion

    ext {
        userOrg = "grails"
        isGrailsPlugin = name.startsWith('grails-plugin')
        isBuildSnapshot = version.toString().endsWith("-SNAPSHOT")
    }

    repositories {
        maven { url "https://repo.grails.org/grails/restricted" }
    }

    tasks.withType(GroovyCompile).configureEach {
        configure(groovyOptions) {
            forkOptions.jvmArgs = ['-Xmx1024m']
        }
    }

    tasks.withType(Test).configureEach {
        testLogging {
            events "failed"
            exceptionFormat "full"
            showStandardStreams true
        }
    }

    if (project.name.startsWith("examples-")) {
        if (project.name.startsWith("examples-grails-")) {
            apply plugin: 'org.apache.grails.gradle.grails-web'
        }
        return
    }

    //TODO: See RENAME.md in grails-core on how to repackage these libraries
    group "org.apache.grails"

    if (isGrailsPlugin) {
        apply plugin: 'groovy'
        apply plugin: 'eclipse'
        apply plugin: 'idea'
        apply plugin: 'java-library'
        apply plugin: 'org.apache.grails.gradle.grails-plugin'

        sourceCompatibility = 1.11
        targetCompatibility = 1.11
    } else {
        apply from: "${commonBuild}/common-project.gradle"
    }

    dependencies {
        implementation "com.graphql-java:graphql-java:$graphqlJavaVersion"
        testImplementation "org.codehaus.groovy:groovy-test"
        testImplementation "io.projectreactor:reactor-test:3.6.1"
        testImplementation("org.spockframework:spock-core:$spockVersion")
        implementation 'org.apache.grails.data:grails-datamapping-core:7.3.4'
    }
}

apply from: "${commonBuild}/common-publishing.gradle"
