Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for pinterest package and group changes #228

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Ktlint Gradle

**Provides a convenient wrapper plugin over the [ktlint](https://github.com/shyiko/ktlint) project.**
**Provides a convenient wrapper plugin over the [ktlint](https://github.com/pinterest/ktlint) project.**

Latest plugin version: [7.3.0](/CHANGELOG.md#730---2019-04-10)

Expand All @@ -10,7 +10,7 @@ Latest plugin version: [7.3.0](/CHANGELOG.md#730---2019-04-10)
[![Gradle Plugin Portal](https://img.shields.io/maven-metadata/v/https/plugins.gradle.org/m2/org/jlleitschuh/gradle/ktlint/org.jlleitschuh.gradle.ktlint.gradle.plugin/maven-metadata.xml.svg?colorB=007ec6&label=gradlePluginPortal)](https://plugins.gradle.org/plugin/org.jlleitschuh.gradle.ktlint)

This plugin creates convenient tasks in your Gradle project
that run [ktlint](https://github.com/shyiko/ktlint) checks or do code
that run [ktlint](https://github.com/pinterest/ktlint) checks or do code
auto format.

Plugin can be applied to any project, but only activates if that project has the kotlin plugin applied.
Expand Down Expand Up @@ -64,7 +64,7 @@ This API is available in new versions of gradle.

Minimal supported [Gradle](www.gradle.org) version: `4.10`

Minimal supported [ktlint](https://github.com/shyiko/ktlint) version: `0.22.0`
Minimal supported [ktlint](https://github.com/pinterest/ktlint) version: `0.22.0`

### Ktlint plugin

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.jlleitschuh.gradle.ktlint

import net.swiftzer.semver.SemVer
import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.model.ObjectFactory
Expand Down Expand Up @@ -30,7 +31,7 @@ open class KtlintApplyToIdeaTask @Inject constructor(
fun generate() {
project.javaexec {
it.classpath = classpath
it.main = "com.github.shyiko.ktlint.Main"
it.main = resolveMainClassName()
if (globally.get()) {
it.args("--apply-to-idea")
} else {
Expand All @@ -43,4 +44,9 @@ open class KtlintApplyToIdeaTask @Inject constructor(
}
}
}

private fun resolveMainClassName() = when {
tasomaniac marked this conversation as resolved.
Show resolved Hide resolved
SemVer.parse(ktlintVersion.get()) < SemVer(0, 32, 0) -> "com.github.shyiko.ktlint.Main"
else -> "com.pinterest.ktlint.Main"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ open class KtlintCheckTask @Inject constructor(
additionalConfig: (JavaExecSpec) -> Unit
): (JavaExecSpec) -> Unit = { javaExecSpec ->
javaExecSpec.classpath = classpath
javaExecSpec.main = "com.github.shyiko.ktlint.Main"
javaExecSpec.main = resolveMainClassName()
javaExecSpec.args(getSource().toRelativeFilesList())
if (verbose.get()) {
javaExecSpec.args("--verbose")
Expand Down Expand Up @@ -158,6 +158,11 @@ open class KtlintCheckTask @Inject constructor(
}
}

private fun resolveMainClassName() = when {
SemVer.parse(ktlintVersion.get()) < SemVer(0, 32, 0) -> "com.github.shyiko.ktlint.Main"
else -> "com.pinterest.ktlint.Main"
}

private fun ReporterType.isAvailable() =
SemVer.parse(ktlintVersion.get()) >= availableSinceVersion

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ internal constructor(
/**
* The version of ktlint to use.
*/
val version: Property<String> = objectFactory.property { set("0.31.0") }
val version: Property<String> = objectFactory.property { set("0.32.0") }

/**
* Enable verbose mode.
Expand Down Expand Up @@ -72,7 +72,7 @@ internal constructor(
/**
* Enable experimental ktlint rules.
*
* You can find [here](https://github.com/pinterest/ktlint/blob/master/ktlint-ruleset-experimental/src/main/kotlin/com/github/shyiko/ktlint/ruleset/experimental/ExperimentalRuleSetProvider.kt)
* You can find [here](https://github.com/pinterest/ktlint/blob/master/ktlint-ruleset-experimental/src/main/kotlin/com/pinterest/ktlint/ruleset/experimental/ExperimentalRuleSetProvider.kt)
* list of experimental rules that will be enabled.
*
* @since ktlint `0.31.0`
Expand Down
31 changes: 20 additions & 11 deletions plugin/src/main/kotlin/org/jlleitschuh/gradle/ktlint/PluginUtil.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.android.build.gradle.FeatureExtension
import com.android.build.gradle.LibraryExtension
import com.android.build.gradle.TestExtension
import com.android.build.gradle.api.BaseVariant
import net.swiftzer.semver.SemVer
import org.gradle.api.DomainObjectSet
import org.gradle.api.Project
import org.gradle.api.Task
Expand All @@ -22,18 +23,24 @@ import java.nio.file.Path
internal fun createConfiguration(target: Project, extension: KtlintExtension) =
target.configurations.maybeCreate("ktlint").apply {
this.incoming.beforeResolve {
target.logger.info("Add dependency: ktlint version ${extension.version.get()}")
val ktlintVersion = extension.version.get()
target.logger.info("Add dependency: ktlint version $ktlintVersion")
target.dependencies.add(
this.name,
mapOf(
"group" to "com.github.shyiko",
"group" to resolveGroup(ktlintVersion),
"name" to "ktlint",
"version" to extension.version.get()
"version" to ktlintVersion
)
)
}
}

private fun resolveGroup(ktlintVersion: String) = when {
SemVer.parse(ktlintVersion) < SemVer(0, 32, 0) -> "com.github.shyiko"
else -> "com.pinterest"
}

internal inline fun <reified T : Task> Project.registerTask(
name: String,
noinline configuration: T.() -> Unit
Expand Down Expand Up @@ -66,7 +73,8 @@ private tailrec fun searchEditorConfigFiles(
val parentDir = projectPath.parent
return if (parentDir != null &&
projectPath != project.rootDir.toPath() &&
!editorConfigFC.isRootEditorConfig()) {
!editorConfigFC.isRootEditorConfig()
) {
searchEditorConfigFiles(project, parentDir, outputCollection)
} else {
outputCollection
Expand Down Expand Up @@ -143,10 +151,11 @@ internal fun String.androidVariantMetaFormatTaskName(
/**
* Get specific android variants from [BaseExtension].
*/
internal val BaseExtension.variants: DomainObjectSet<out BaseVariant>? get() = when (this) {
is AppExtension -> applicationVariants
is LibraryExtension -> libraryVariants
is FeatureExtension -> featureVariants
is TestExtension -> applicationVariants
else -> null // Instant app extension doesn't provide variants access
}
internal val BaseExtension.variants: DomainObjectSet<out BaseVariant>?
tasomaniac marked this conversation as resolved.
Show resolved Hide resolved
get() = when (this) {
is AppExtension -> applicationVariants
is LibraryExtension -> libraryVariants
is FeatureExtension -> featureVariants
is TestExtension -> applicationVariants
else -> null // Instant app extension doesn't provide variants access
}
Original file line number Diff line number Diff line change
Expand Up @@ -259,13 +259,11 @@ abstract class BaseKtlintPluginTest : AbstractPluginTest() {
}
}

private
fun assertReportCreated(reportType: ReporterType) {
private fun assertReportCreated(reportType: ReporterType) {
assertThat(reportLocation(reportType).isFile).isTrue()
}

private
fun assertReportNotCreated(reportType: ReporterType) {
private fun assertReportNotCreated(reportType: ReporterType) {
assertThat(reportLocation(reportType).isFile).isFalse()
}

Expand Down Expand Up @@ -418,6 +416,25 @@ abstract class BaseKtlintPluginTest : AbstractPluginTest() {
}
}

@Test
fun `Should apply pinterest ktlint version from extension when the requested version is 0_32_0`() {
projectRoot.withCleanSources()

projectRoot.buildFile().appendText(
"""

ktlint.version = "0.32.0"
""".trimIndent()
)

build(":dependencies").apply {
assertThat(output).contains(
"ktlint\n" +
"\\--- com.pinterest:ktlint:0.32.0\n"
)
}
}

@Test
internal fun `Should check kotlin script file in project folder`() {
projectRoot.withCleanSources()
Expand Down