Skip to content

Commit 1ca92b2

Browse files
committed
Switch to simple in-repo format
1 parent 445af73 commit 1ca92b2

5 files changed

Lines changed: 77 additions & 32 deletions

File tree

build.gradle.kts

Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,18 @@
1414
* limitations under the License.
1515
*/
1616

17+
import org.gradle.api.attributes.Bundling
18+
import org.gradle.api.attributes.Category
19+
import org.gradle.api.attributes.LibraryElements
20+
import org.gradle.api.attributes.Usage
21+
import org.gradle.api.attributes.java.TargetJvmEnvironment
22+
import org.gradle.api.file.FileCollection
23+
import org.gradle.process.CommandLineArgumentProvider
24+
1725
plugins {
1826
alias(libs.plugins.dokka) apply false
1927
alias(libs.plugins.intelliJPlatform) apply false
2028
alias(libs.plugins.kotlin) apply false
21-
alias(libs.plugins.ktfmt) apply false
2229
alias(libs.plugins.nexusPublish)
2330
alias(libs.plugins.shadowJar) apply false
2431
}
@@ -27,6 +34,75 @@ version = providers.gradleProperty("ktfmt.version").get()
2734

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

37+
repositories {
38+
mavenCentral()
39+
}
40+
41+
val ktfmtCliDependencies = configurations.dependencyScope("ktfmtCliDependencies")
42+
val ktfmtCliClasspath =
43+
configurations.resolvable("ktfmtCliClasspath") {
44+
extendsFrom(ktfmtCliDependencies.get())
45+
attributes {
46+
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
47+
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY))
48+
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.JAR))
49+
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
50+
attribute(
51+
TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE,
52+
objects.named(TargetJvmEnvironment.STANDARD_JVM),
53+
)
54+
}
55+
}
56+
57+
dependencies { add(ktfmtCliDependencies.name, project(":ktfmt")) }
58+
59+
val ktfmtFiles =
60+
fileTree(rootDir) {
61+
include("**/*.kt")
62+
include("**/*.kts")
63+
exclude("**/build/**")
64+
}
65+
66+
class KtfmtArgumentsProvider(
67+
@get:InputFiles @get:PathSensitive(PathSensitivity.RELATIVE) val files: FileCollection,
68+
@get:Input val check: Boolean,
69+
) : CommandLineArgumentProvider {
70+
override fun asArguments(): Iterable<String> = buildList {
71+
add("--quiet")
72+
if (check) {
73+
add("--dry-run")
74+
add("--set-exit-if-changed")
75+
}
76+
addAll(files.files.sorted().map { it.path })
77+
}
78+
}
79+
80+
fun JavaExec.configureKtfmtRun(files: FileCollection, check: Boolean) {
81+
group = if (check) "verification" else "formatting"
82+
classpath = ktfmtCliClasspath.get()
83+
mainClass.set("com.facebook.ktfmt.cli.Main")
84+
argumentProviders.add(KtfmtArgumentsProvider(files, check))
85+
onlyIf { files.files.isNotEmpty() }
86+
}
87+
88+
val ktfmtCheck =
89+
tasks.register<JavaExec>("ktfmtCheck") {
90+
group = "verification"
91+
description = "Run Ktfmt formatter validation"
92+
configureKtfmtRun(ktfmtFiles, check = true)
93+
}
94+
95+
val ktfmtFormat =
96+
tasks.register<JavaExec>("ktfmtFormat") {
97+
group = "formatting"
98+
description = "Run Ktfmt formatter"
99+
configureKtfmtRun(ktfmtFiles, check = false)
100+
}
101+
102+
subprojects {
103+
tasks.named { it == "check" }.configureEach { dependsOn(rootProject.tasks.named("ktfmtCheck")) }
104+
}
105+
30106
nexusPublishing {
31107
repositories {
32108
sonatype {

core/build.gradle.kts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
import com.ncorti.ktfmt.gradle.TrailingCommaManagementStrategy
1817
import kotlin.io.path.writeText
1918
import org.jetbrains.dokka.gradle.DokkaTask
2019
import org.jetbrains.intellij.platform.gradle.utils.asPath
@@ -24,7 +23,6 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2423
plugins {
2524
kotlin("jvm")
2625
id("com.gradleup.shadow")
27-
id("com.ncorti.ktfmt.gradle")
2826
id("maven-publish")
2927
id("org.jetbrains.dokka")
3028
id("signing")
@@ -52,9 +50,6 @@ val generateSources by tasks.registering {
5250
dependsOn(tasks.named("generateKtfmtFile"))
5351
}
5452

55-
fun Task.isSelfKtfmtTask(): Boolean =
56-
name.startsWith("ktfmtCheck") || name.startsWith("ktfmtFormat")
57-
5853
tasks {
5954
// Create Ktfmt.kt file with version information
6055
register("generateKtfmtFile") {
@@ -89,12 +84,6 @@ tasks {
8984

9085
// Handle multiple versions of Kotlin here
9186
withType<KotlinCompile> {
92-
// ktfmt-gradle normally makes compilation run after ktfmt tasks. This module's ktfmt tasks use
93-
// the in-tree formatter jar, so the formatter checks need the jar first in clean builds.
94-
val orderingWithoutSelfKtfmt =
95-
mustRunAfter.getDependencies(this).filterNot { it.isSelfKtfmtTask() }
96-
setMustRunAfter(orderingWithoutSelfKtfmt)
97-
9887
// Only get major and minor version, e.g. 1.8.0-beta1 -> 1.8
9988
val kotlinVersion = rootProject.libs.versions.kotlin.get().substringBeforeLast(".")
10089
exclude {
@@ -106,8 +95,6 @@ tasks {
10695
// Add main class to jar manifest
10796
withType(Jar::class) { manifest { attributes["Main-Class"] = "com.facebook.ktfmt.cli.Main" } }
10897

109-
matching { it.isSelfKtfmtTask() }.configureEach { dependsOn(named("jar")) }
110-
11198
// Sources
11299
register("sourcesJar", Jar::class) {
113100
archiveClassifier.set("sources")
@@ -146,8 +133,6 @@ kotlin {
146133
}
147134
}
148135

149-
ktfmt { trailingCommaManagementStrategy.set(TrailingCommaManagementStrategy.ONLY_ADD) }
150-
151136
group = "com.facebook"
152137

153138
version = rootProject.version

gradle/libs.versions.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ org-ec4j-core = "1.2.0"
1414
# plugins
1515
gradlePlugin-dokka = "2.0.0"
1616
gradlePlugin-intelliJPlatform = "2.6.0"
17-
gradlePlugin-ktfmt = "0.24.0"
1817
gradlePlugin-nexusPublish = "2.0.0"
1918
gradlePlugin-shadowJar = "9.0.2"
2019

@@ -39,6 +38,5 @@ kotlin-test-junit4 = { module = "org.jetbrains.kotlin:kotlin-test-junit", versio
3938
dokka = { id = "org.jetbrains.dokka", version.ref = "gradlePlugin-dokka" }
4039
intelliJPlatform = { id = "org.jetbrains.intellij.platform", version.ref = "gradlePlugin-intelliJPlatform" }
4140
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
42-
ktfmt = { id = "com.ncorti.ktfmt.gradle", version.ref = "gradlePlugin-ktfmt" }
4341
nexusPublish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "gradlePlugin-nexusPublish" }
4442
shadowJar = { id = "com.gradleup.shadow", version.ref = "gradlePlugin-shadowJar" }

ktfmt_idea_plugin/build.gradle.kts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType.IntellijIdeaC
1919
plugins {
2020
java
2121
alias(libs.plugins.kotlin)
22-
alias(libs.plugins.ktfmt)
2322
alias(libs.plugins.intelliJPlatform)
2423
}
2524

@@ -51,12 +50,6 @@ dependencies {
5150
implementation(project(":ktfmt"))
5251
}
5352

54-
ktfmt {
55-
trailingCommaManagementStrategy.set(
56-
com.ncorti.ktfmt.gradle.TrailingCommaManagementStrategy.ONLY_ADD
57-
)
58-
}
59-
6053
intellijPlatform {
6154
projectName.set("ktfmt_idea_plugin")
6255

online_formatter/build.gradle.kts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
plugins {
1818
kotlin("jvm")
19-
id("com.ncorti.ktfmt.gradle")
2019
}
2120

2221
repositories {
@@ -39,12 +38,6 @@ kotlin {
3938
jvmToolchain(javaVersion.toInt())
4039
}
4140

42-
ktfmt {
43-
trailingCommaManagementStrategy.set(
44-
com.ncorti.ktfmt.gradle.TrailingCommaManagementStrategy.ONLY_ADD
45-
)
46-
}
47-
4841
tasks {
4942
test { useJUnit() }
5043

0 commit comments

Comments
 (0)