Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 73 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,19 @@
* limitations under the License.
*/

import org.gradle.api.attributes.Bundling
import org.gradle.api.attributes.Category
import org.gradle.api.attributes.LibraryElements
import org.gradle.api.attributes.Usage
import org.gradle.api.attributes.java.TargetJvmEnvironment
import org.gradle.api.file.FileCollection
import org.gradle.process.CommandLineArgumentProvider

plugins {
alias(libs.plugins.dokka) apply false
alias(libs.plugins.dokka.javadoc) apply false
alias(libs.plugins.intelliJPlatform) apply false
alias(libs.plugins.kotlin) apply false
alias(libs.plugins.ktfmt) apply false
alias(libs.plugins.nexusPublish)
alias(libs.plugins.shadowJar) apply false
}
Expand All @@ -28,6 +35,71 @@ version = providers.gradleProperty("ktfmt.version").get()

tasks.wrapper { distributionType = Wrapper.DistributionType.ALL }

val ktfmtCliDependencies = configurations.dependencyScope("ktfmtCliDependencies")
val ktfmtCliClasspath =
configurations.resolvable("ktfmtCliClasspath") {
extendsFrom(ktfmtCliDependencies.get())
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY))
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.JAR))
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
attribute(
TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE,
objects.named(TargetJvmEnvironment.STANDARD_JVM),
)
}
}

dependencies { add(ktfmtCliDependencies.name, project(":ktfmt")) }

val ktfmtFiles =
fileTree(rootDir) {
include("**/*.kt")
include("**/*.kts")
exclude("**/build/**")
}

class KtfmtArgumentsProvider(
@get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE) val files: FileCollection,
@get:Input val check: Boolean,
) : CommandLineArgumentProvider {
override fun asArguments(): Iterable<String> = buildList {
add("--quiet")
if (check) {
add("--dry-run")
add("--set-exit-if-changed")
}
addAll(files.files.sorted().map { it.path })
}
}

fun JavaExec.configureKtfmtRun(files: FileCollection, check: Boolean) {
group = if (check) "verification" else "formatting"
classpath = ktfmtCliClasspath.get()
mainClass.set("com.facebook.ktfmt.cli.Main")
argumentProviders.add(KtfmtArgumentsProvider(files, check))
onlyIf { files.files.isNotEmpty() }
}

val ktfmtCheck =
tasks.register<JavaExec>("ktfmtCheck") {
group = "verification"
description = "Run Ktfmt formatter validation"
configureKtfmtRun(ktfmtFiles, check = true)
}

val ktfmtFormat =
tasks.register<JavaExec>("ktfmtFormat") {
group = "formatting"
description = "Run Ktfmt formatter"
configureKtfmtRun(ktfmtFiles, check = false)
}

subprojects {
tasks.named { it == "check" }.configureEach { dependsOn(rootProject.tasks.named("ktfmtCheck")) }
}

nexusPublishing {
repositories {
sonatype {
Expand Down
4 changes: 0 additions & 4 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,10 @@
* limitations under the License.
*/

import com.ncorti.ktfmt.gradle.tasks.KtfmtCheckTask
import org.gradle.kotlin.dsl.`kotlin-dsl`

plugins {
`kotlin-dsl`
alias(libs.plugins.ktfmt)
}

gradlePlugin {
Expand All @@ -30,5 +28,3 @@ gradlePlugin {
}
}
}

tasks.named("jar") { dependsOn(tasks.withType<KtfmtCheckTask>()) }
12 changes: 0 additions & 12 deletions core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,13 @@
*/

import com.facebook.ktfmt.GenerateKtfmtFileTask
import com.ncorti.ktfmt.gradle.tasks.KtfmtCheckTask
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation

plugins {
kotlin("jvm")
alias(libs.plugins.dokka)
alias(libs.plugins.dokka.javadoc)
alias(libs.plugins.ktfmt)
alias(libs.plugins.shadowJar)
id("maven-publish")
id("signing")
Expand Down Expand Up @@ -111,16 +109,6 @@ kotlin {
}
}

ktfmt {
trailingCommaManagementStrategy.set(
com.ncorti.ktfmt.gradle.TrailingCommaManagementStrategy.ONLY_ADD
)
}

tasks.named("compileKotlin") { setMustRunAfter(emptyList<Any>()) }

tasks.withType<KtfmtCheckTask>().configureEach { setMustRunAfter(listOf(tasks.named("jar"))) }

group = "com.facebook"

version = rootProject.version
Expand Down
2 changes: 0 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ org-ec4j-core = "1.2.0"
# plugins
gradlePlugin-dokka = "2.2.0"
gradlePlugin-intelliJPlatform = "2.6.0"
gradlePlugin-ktfmt = "0.26.0"
gradlePlugin-nexusPublish = "2.0.0"
gradlePlugin-shadowJar = "9.0.2"

Expand All @@ -39,6 +38,5 @@ dokka = { id = "org.jetbrains.dokka", version.ref = "gradlePlugin-dokka" }
dokka-javadoc = { id = "org.jetbrains.dokka-javadoc", version.ref = "gradlePlugin-dokka" }
intelliJPlatform = { id = "org.jetbrains.intellij.platform", version.ref = "gradlePlugin-intelliJPlatform" }
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
ktfmt = { id = "com.ncorti.ktfmt.gradle", version.ref = "gradlePlugin-ktfmt" }
nexusPublish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "gradlePlugin-nexusPublish" }
shadowJar = { id = "com.gradleup.shadow", version.ref = "gradlePlugin-shadowJar" }
7 changes: 0 additions & 7 deletions ktfmt_idea_plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType.IntellijIdeaC
plugins {
java
alias(libs.plugins.kotlin)
alias(libs.plugins.ktfmt)
alias(libs.plugins.intelliJPlatform)
}

Expand Down Expand Up @@ -51,12 +50,6 @@ dependencies {
implementation(project(":ktfmt"))
}

ktfmt {
trailingCommaManagementStrategy.set(
com.ncorti.ktfmt.gradle.TrailingCommaManagementStrategy.ONLY_ADD
)
}

intellijPlatform {
projectName.set("ktfmt_idea_plugin")

Expand Down
7 changes: 0 additions & 7 deletions online_formatter/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

plugins {
kotlin("jvm")
alias(libs.plugins.ktfmt)
}

repositories {
Expand All @@ -39,12 +38,6 @@ kotlin {
jvmToolchain(javaVersion.toInt())
}

ktfmt {
trailingCommaManagementStrategy.set(
com.ncorti.ktfmt.gradle.TrailingCommaManagementStrategy.ONLY_ADD
)
}

tasks {
test { useJUnit() }

Expand Down
10 changes: 10 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@
* limitations under the License.
*/

pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
}
}

rootProject.name = "ktfmt-parent"

include(
Expand All @@ -35,4 +42,7 @@ dependencyResolutionManagement {
version("ktfmt", ktfmtVersion)
}
}
repositories {
mavenCentral()
}
}
Loading