/*
 * 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
 *
 *     http://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.
 */


// This script tries to guess sensible defaults for gradle parallelism
// and local machine's resources and save them under 'gradle.properties'.

def hasDefaults = rootProject.file("gradle.properties").exists()

configure(rootProject) {
  // Add a task verifying that gradle process has access to JVM internals.
  // this is occasionally needed for certain tasks.
  task checkJdkInternalsExportedToGradle() {
    doFirst {
      def jdkCompilerModule = ModuleLayer.boot().findModule("jdk.compiler").orElseThrow()
      def gradleModule = getClass().module
      def internalsExported = [
          "com.sun.tools.javac.api",
          "com.sun.tools.javac.file",
          "com.sun.tools.javac.parser",
          "com.sun.tools.javac.tree",
          "com.sun.tools.javac.util"
      ].stream()
        .allMatch(pkg -> jdkCompilerModule.isExported(pkg, gradleModule))

      if (!internalsExported) {
        throw new GradleException(
            "Certain gradle tasks and plugins require access to jdk.compiler" +
                " internals, your gradle.properties might have just been generated or could be" +
                " out of sync (see gradle/template.gradle.properties)")
      }
    }
  }
}

task localSettings() {
  // This is just a placeholder until all references to the localSettings task are removed #SOLR-16641
}
