// Copyright 2011-2024 Google LLC
//
// 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.

allprojects {
    apply plugin: 'java'
    apply plugin: 'idea'

    java {
        sourceCompatibility = JavaVersion.VERSION_11
    }

    tasks.withType(AbstractArchiveTask) {
        preserveFileTimestamps = false
        reproducibleFileOrder = true
    }

    tasks.withType(JavaCompile) {
        options.encoding = 'UTF-8'
    }

    buildscript {
        repositories {
            maven {
                url "https://maven-central.storage-download.googleapis.com/maven2/"
            }
            maven {
                url "https://plugins.gradle.org/m2/"
            }
            mavenCentral()
        }
    }
}

def yFilesDir
if (System.env.YFILES_DIR) {
    yFilesDir = System.env.YFILES_DIR
} else if (project.hasProperty("YFILES_DIR")) {
    yFilesDir = project.getProperty("YFILES_DIR")
} else {
    // Note: This path is relative to the sub-project
    yFilesDir = '../../../../java/yfiles/v2_17'
}

subprojects {
    repositories {
        flatDir {
            dirs yFilesDir
        }
        mavenCentral()
    }
}

// Downloads all projects dependencies from the repository
task resolveDependencies {
    doLast {
        rootProject.allprojects { project ->
            project.buildscript.configurations.forEach { configuration ->
                if (configuration.canBeResolved) {
                    configuration.resolve()
                }
            }
            project.configurations.forEach { configuration ->
                if (configuration.canBeResolved) {
                    configuration.resolve()
                }
            }
        }
    }
}
