forked from pinterest/ktlint
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.gradle
117 lines (103 loc) · 3.82 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
plugins {
id 'org.jetbrains.kotlin.jvm' apply false
alias(libs.plugins.checksum)
alias(libs.plugins.shadow)
alias(libs.plugins.githubRelease)
// id 'nebula.lint' version '17.5.0'
}
def isKotlinDev = project.hasProperty('isKotlinDev')
allprojects { p ->
if (isKotlinDev) {
String definedVersion = p.ext."VERSION_NAME".minus("-SNAPSHOT")
p.ext."VERSION_NAME" = "$definedVersion-kotlin-dev-SNAPSHOT".toString()
}
tasks.withType(Test).configureEach {
it.useJUnitPlatform()
}
}
configurations {
ktlint
}
dependencies {
ktlint projects.ktlint
}
task ktlint(type: JavaExec, group: LifecycleBasePlugin.VERIFICATION_GROUP) {
description = "Check Kotlin code style including experimental rules."
classpath = configurations.ktlint
mainClass.set("com.pinterest.ktlint.Main")
// Experimental rules run by default run on the ktlint code base itself. Experimental rules should not be released if
// we are not pleased ourselves with the results on the ktlint code base.
// Sources in "ktlint/src/test/resources" are excluded as those source contain lint errors that have to be detected by
// unit tests and should not be reported/fixed.
args '**/src/**/*.kt', '!ktlint/src/test/resources/**', '--baseline=ktlint/src/test/resources/test-baseline.xml', '--experimental', '--verbose'
}
// Deployment tasks
String getGithubToken() {
if (project.hasProperty("servers.github.privKey")) {
return project.'servers.github.privKey'
} else {
logger.warn("No github token specified")
return ""
}
}
// Explicitly adding dependency on "shadowJarExecutable" as Gradle does not it set via "releaseAssets" property
tasks.named("githubRelease") {
dependsOn { projects.ktlint.dependencyProject.tasks.named("shadowJarExecutable") }
}
githubRelease {
token getGithubToken()
owner "pinterest"
repo "ktlint"
tagName project.properties['VERSION_NAME']
releaseName project.properties['VERSION_NAME']
releaseAssets project.files({
// "shadowJarExecutableChecksum" task does not declare checksum files
// as output, only the whole output directory. As it uses the same directory
// as "shadowJarExecutable" - just pass all the files from that directory
projects.ktlint.dependencyProject.tasks.named("shadowJarExecutable").get()
.outputs
.files
.getFiles()
.first()
.parentFile
.listFiles()
})
overwrite true
dryRun false
body {
String changelog = project.file("CHANGELOG.md").text
changelog = changelog.substring(changelog.indexOf("## "))
// 1 in indexOf here to skip first "## [" occurence
changelog.substring(0, changelog.indexOf("## [", 1))
}
}
// Put "servers.github.privKey" in "$HOME/.gradle/gradle.properties".
def announceTask = tasks.register("announceRelease", Exec.class) { announceTask ->
group = "Help"
description = "Runs .announce script"
subprojects
.findAll { !it.name.contains("ktlint-ruleset-template") }
.each { subproject ->
announceTask.dependsOn subproject.tasks.named("publishMavenPublicationToMavenCentralRepository")
}
commandLine './.announce', '-y'
environment VERSION: "${project.'VERSION_NAME'}"
environment GITHUB_TOKEN: "${getGithubToken()}"
}
def homebrewTask = tasks.register("homebrewBumpFormula", Exec.class) { homebrewTask ->
group "Help"
description "Runs brew bump-forumula-pr"
commandLine './.homebrew'
environment VERSION: "${project.'VERSION_NAME'}"
dependsOn(tasks.named("githubRelease"))
}
tasks.register("publishNewRelease", DefaultTask.class) {
group = "Help"
description = "Triggers uploading new archives and publish announcements"
dependsOn(announceTask, homebrewTask, tasks.named("githubRelease"))
}
tasks.withType(Wrapper).configureEach {
gradleVersion = libs.versions.gradle
distributionSha256Sum = libs.versions.gradleSha256
distributionType = Wrapper.DistributionType.BIN
}