blob: ffcf7b8888ee8ee1db549eb8c17c39eb90720e8a [file] [log] [blame]
/*
* 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.
*/
plugins {
id("com.github.autostyle")
id("com.github.vlsi.ide")
}
// When building build-logic projects, Gradle applies the plugins to "gradle-kotlin-dsl-accessors" project
// And the below logic can't fully work there (e.g. .ratignore file is not available)
// The proper resolution would be to support lazy configuration properties in AutoStyle
val isActualPluginApplication =
rootProject.name.startsWith("jmeter")
fun com.github.autostyle.gradle.BaseFormatExtension.license() {
if (isActualPluginApplication) {
licenseHeader(rootProject.ide.licenseHeader) {
copyrightStyle("bat", com.github.autostyle.generic.DefaultCopyrightStyle.REM)
copyrightStyle("cmd", com.github.autostyle.generic.DefaultCopyrightStyle.REM)
addBlankLineAfter.set(true)
}
}
trimTrailingWhitespace()
endWithNewline()
}
autostyle {
kotlinGradle {
license()
ktlint("0.40.0")
}
format("configs") {
filter {
include("**/*.sh", "**/*.bsh", "**/*.cmd", "**/*.bat")
include("**/*.properties", "**/*.yml")
include("**/*.xsd", "**/*.xsl", "**/*.xml")
// Autostyle does not support gitignore yet https://github.com/autostyle/autostyle/issues/13
exclude("out/**")
exclude(".gradle/**")
exclude("node_modules")
if (project == rootProject) {
if (isActualPluginApplication) {
exclude(rootDir.resolve(".ratignore").readLines())
}
exclude("gradlew*")
// Generated by batch tests. It ignores log4j2.xml, however it is not that important
// The configuration will be removed when Autostyle will use .gitignore
exclude("bin/*.xml")
} else {
exclude("bin/**")
}
}
license()
}
format("markdown") {
filter {
include("**/*.md")
exclude(".gradle/**")
exclude("node_modules")
}
endWithNewline()
}
}
plugins.withId("java") {
autostyle {
java {
license()
importOrder("static ", "java.", "javax", "org", "net", "com", "")
indentWithSpaces(4)
}
}
}
plugins.withId("groovy") {
autostyle {
groovy {
license()
importOrder("static ", "java.", "javax", "org", "net", "com", "")
indentWithSpaces(4)
}
}
}
plugins.withId("org.jetbrains.kotlin.jvm") {
autostyle {
kotlin {
license()
trimTrailingWhitespace()
ktlint("0.40.0")
endWithNewline()
}
}
}