blob: c418cd7973efdc95985dddd1db1fcc550a92361b [file] [log] [blame]
import org.gradle.api.internal.FeaturePreviews
/*
* Copyright 2010 the original author or 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
*
* 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.
*/
apply(from = "gradle/shared-with-buildSrc/build-cache-configuration.settings.gradle.kts")
apply(from = "gradle/shared-with-buildSrc/mirrors.settings.gradle.kts")
include("instantExecution")
include("instantExecutionReport")
include("apiMetadata")
include("distributionsDependencies")
include("distributions")
include("baseServices")
include("baseServicesGroovy")
include("logging")
include("processServices")
include("jvmServices")
include("core")
include("dependencyManagement")
include("wrapper")
include("cli")
include("launcher")
include("bootstrap")
include("messaging")
include("resources")
include("resourcesHttp")
include("resourcesGcs")
include("resourcesS3")
include("resourcesSftp")
include("plugins")
include("scala")
include("ide")
include("ideNative")
include("idePlay")
include("osgi")
include("maven")
include("announce")
include("codeQuality")
include("antlr")
include("toolingApi")
include("toolingApiBuilders")
include("docs")
include("integTest")
include("signing")
include("ear")
include("native")
include("internalTesting")
include("internalIntegTesting")
include("internalPerformanceTesting")
include("internalAndroidPerformanceTesting")
include("performance")
include("buildScanPerformance")
include("javascript")
include("buildComparison")
include("reporting")
include("diagnostics")
include("publish")
include("ivy")
include("jacoco")
include("buildInit")
include("buildOption")
include("platformBase")
include("platformNative")
include("platformJvm")
include("languageJvm")
include("languageJava")
include("languageGroovy")
include("languageNative")
include("toolingNative")
include("languageScala")
include("pluginUse")
include("pluginDevelopment")
include("modelCore")
include("modelGroovy")
include("buildCacheHttp")
include("testingBase")
include("testingNative")
include("testingJvm")
include("testingJunitPlatform")
include("platformPlay")
include("testKit")
include("installationBeacon")
include("soak")
include("smokeTest")
include("compositeBuilds")
include("workers")
include("runtimeApiInfo")
include("persistentCache")
include("buildCache")
include("coreApi")
include("versionControl")
include("fileCollections")
include("files")
include("hashing")
include("snapshots")
include("architectureTest")
include("buildCachePackaging")
include("execution")
include("buildProfile")
include("kotlinCompilerEmbeddable")
include("kotlinDsl")
include("kotlinDslProviderPlugins")
include("kotlinDslPlugins")
include("kotlinDslToolingModels")
include("kotlinDslToolingBuilders")
include("kotlinDslTestFixtures")
include("kotlinDslIntegTests")
include("workerProcesses")
include("pineapple")
val upperCaseLetters = "\\p{Upper}".toRegex()
fun String.toKebabCase() =
replace(upperCaseLetters) { "-${it.value.toLowerCase()}" }
rootProject.name = "gradle"
// List of sub-projects that have a Groovy DSL build script.
// The intent is for this list to diminish until it disappears.
val groovyBuildScriptProjects = hashSetOf(
"distributions",
"docs",
"performance"
)
fun buildFileNameFor(projectDirName: String) =
"$projectDirName${buildFileExtensionFor(projectDirName)}"
fun buildFileExtensionFor(projectDirName: String) =
if (projectDirName in groovyBuildScriptProjects) ".gradle" else ".gradle.kts"
for (project in rootProject.children) {
val projectDirName = project.name.toKebabCase()
project.projectDir = file("subprojects/$projectDirName")
project.buildFileName = buildFileNameFor(projectDirName)
require(project.projectDir.isDirectory) {
"Project directory ${project.projectDir} for project ${project.name} does not exist."
}
require(project.buildFile.isFile) {
"Build file ${project.buildFile} for project ${project.name} does not exist."
}
}
pluginManagement {
repositories {
gradlePluginPortal()
maven { url = uri("https://repo.gradle.org/gradle/libs-releases") }
}
}
val ignoredFeatures = setOf(
// we don't want to publish Gradle metadata to public repositories until the format is stable.
FeaturePreviews.Feature.GRADLE_METADATA
)
FeaturePreviews.Feature.values().forEach { feature ->
if (feature.isActive && feature !in ignoredFeatures) {
enableFeaturePreview(feature.name)
}
}