Skip to content

Commit 472e3d0

Browse files
author
Jean-Michel Fayard
committed
Version 0.6.3 fixes #94: Libs.kt is broken by a wrong indent
1 parent 1199312 commit 472e3d0

19 files changed

+64
-50
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Unreleased
22

3+
# 0.6.3
4+
5+
Fix #94: Libs.kt is broken by a wrong indent
6+
37
# 0.6.2
48

59
If you want to manage your versions from gradle.properties for better compilation avoidance,

README.adoc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
//include::includes.adoc[]
2-
:plugin_version: 0.6.2
1+
// plugin.de.fayard.buildSrcVersions
2+
:plugin_version: 0.6.3
3+
:gradle_version: 5.6.2
34
:repo: jmfayard/buildSrcVersions
45
:branch: 26-buildSrcVersions
56
:github: https://github.com/{repo}
@@ -56,6 +57,10 @@ plugins {
5657
// Don't put any code before the buildscripts {} and plugins {} block
5758
----
5859

60+
Updating Gradle is usually a good idea. You get less bugs, more features and more build speed, and it's as simple as this:
61+
62+
`$ ./gradlew wrapper --gradle-version {gradle_version}`
63+
5964

6065
If you have to, use instead the legacy `buildscript { ... }` syntax
6166

@@ -124,6 +129,7 @@ I have a series of articles called `Built with Gradle`:
124129
You can follow me at https://dev.to/jmfayard
125130

126131

132+
127133
== Configuration
128134

129135
No configuration is required, but some things are configurable.

RELEASE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
- Create a GitHub release https://github.com/jmfayard/buildSrcVersions/releases/new
88
- Try the plugin in sample projects
99
- Update `:plugin_version:` in `README.adoc`
10+
- Search for `plugin.de.fayard.buildSrcVersions` everywhere to update the version
1011
- Otherwise update the README
11-
- Increment `version` in `{plugin,sample-kotlin,sample-groovy}/build.kts`
1212
- Increment the version in recent articles that talk about the plugin

plugin/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
22

33
plugins {
4-
id("de.fayard.buildSrcVersions") version ("0.6.2") // plugin.de.fayard.buildSrcVersions
4+
id("de.fayard.buildSrcVersions") version ("0.6.3") // plugin.de.fayard.buildSrcVersions
55

66
id("com.gradle.plugin-publish")
77
`java-gradle-plugin`
@@ -11,7 +11,7 @@ plugins {
1111
}
1212

1313

14-
version = "0.6.3" // plugin.de.fayard.buildSrcVersions
14+
version = "0.6.4" // plugin.de.fayard.buildSrcVersions
1515
group = "de.fayard"
1616

1717

plugin/src/main/kotlin/de/fayard/BuildSrcVersionsExtension.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ interface BuildSrcVersionsExtension {
5959
* Even better, define an https://editorconfig.org file.
6060
* It will be used if detected.
6161
*/
62-
var indent: String
62+
var indent: String?
6363

6464
/**
6565
* Possible values: KOTLIN_VAL, KOTLIN_OBJECT, GROOVY_DEF, GROOVY_EXT, GRADLE_PROPERTIES

plugin/src/main/kotlin/de/fayard/BuildSrcVersionsTask.kt

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ open class BuildSrcVersionsTask : DefaultTask() {
3131
var update: Boolean = false
3232

3333
@Input
34+
@Optional
3435
@Option(description = "Tabs or Spaces?")
35-
var indent: String = PluginConfig.INDENT_FROM_EDITOR_CONFIG
36+
var indent: String? = null
3637

3738
@TaskAction
3839
fun initializeBuildSrc() {
@@ -69,7 +70,7 @@ open class BuildSrcVersionsTask : DefaultTask() {
6970
}
7071
val versions = unsortedParsedDependencies.sortedBeautifullyBy { it.versionName }
7172

72-
val kotlinPoetry: KotlinPoetry = kotlinpoet(versions, dependencyGraph.gradle, extension)
73+
val kotlinPoetry: KotlinPoetry = kotlinpoet(versions, dependencyGraph.gradle, extension, computeIndent())
7374

7475
if (shouldGenerateLibsKt) {
7576
kotlinPoetry.Libs.writeTo(outputDir)
@@ -145,7 +146,7 @@ open class BuildSrcVersionsTask : DefaultTask() {
145146
private val unsortedParsedDependencies: List<Dependency> by lazy {
146147
val useFdqnByDefault = extension().useFqqnFor.map { PluginConfig.escapeVersionsKt(it) }
147148
parseGraph(dependencyGraph, useFdqnByDefault + PluginConfig.MEANING_LESS_NAMES)
148-
.map { d -> d.maybeUpdate(update) }
149+
.map { d -> d.maybeUpdate(update || extension().alwaysUpdateVersions) }
149150
}
150151

151152
@Input @Optional @Transient
@@ -154,18 +155,16 @@ open class BuildSrcVersionsTask : DefaultTask() {
154155
fun configure(action: Action<BuildSrcVersionsExtension>) {
155156
val projectExtension = project.extensions.getByType<BuildSrcVersionsExtension>() as BuildSrcVersionsExtensionImpl
156157
this._extension = projectExtension.defensiveCopy()
157-
158158
action.execute(this._extension)
159-
if (_extension.indent == PluginConfig.INDENT_FROM_EDITOR_CONFIG) {
160-
val findIndentForKotlin = EditorConfig.findIndentForKotlin(project.file("buildSrc/src/main/kotlin"))
161-
indent = findIndentForKotlin ?: PluginConfig.DEFAULT_INDENT
162-
}
163-
if (_extension.alwaysUpdateVersions) {
164-
update = true
165-
}
166159
PluginConfig.useRefreshVersions = project.hasProperty("plugin.de.fayard.buildSrcVersions")
167160
}
168161

162+
private fun computeIndent(): String {
163+
val fromEditorConfig = EditorConfig.findIndentForKotlin(project.file("buildSrc/src/main/kotlin"))
164+
val computedIndent = indent ?: extension().indent ?: fromEditorConfig ?: PluginConfig.DEFAULT_INDENT
165+
return if (computedIndent.isBlank()) computedIndent else PluginConfig.DEFAULT_INDENT
166+
}
167+
169168
private fun extension(): BuildSrcVersionsExtensionImpl = _extension
170169

171170
fun BuildSrcVersionsExtension.shouldInitializeBuildSrc() = when(versionsOnlyMode) {

plugin/src/main/kotlin/de/fayard/internal/BuildSrcVersionsExtensionImpl.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,22 @@ import de.fayard.VersionsOnlyMode
77
internal open class BuildSrcVersionsExtensionImpl(
88
override var renameLibs: String = PluginConfig.DEFAULT_LIBS,
99
override var renameVersions: String = PluginConfig.DEFAULT_VERSIONS,
10-
override var indent: String = PluginConfig.INDENT_FROM_EDITOR_CONFIG,
10+
override var indent: String? = null,
1111
override var versionsOnlyMode: VersionsOnlyMode? = null,
12-
override var versionsOnlyFile: String? = null
12+
override var versionsOnlyFile: String? = null,
13+
var useFqqnFor: List<String> = emptyList(),
14+
var alwaysUpdateVersions: Boolean = false
1315
) : BuildSrcVersionsExtension, java.io.Serializable {
1416

1517
// Necessary because of https://github.com/jmfayard/buildSrcVersions/issues/92
1618
fun defensiveCopy(): BuildSrcVersionsExtensionImpl = BuildSrcVersionsExtensionImpl(
17-
renameLibs, renameVersions, indent, versionsOnlyMode, versionsOnlyFile
18-
).also {
19-
it.alwaysUpdateVersions = this.alwaysUpdateVersions
20-
it.useFqqnFor = this.useFqqnFor
21-
}
19+
renameLibs, renameVersions, indent, versionsOnlyMode, versionsOnlyFile, useFqqnFor, alwaysUpdateVersions
20+
)
2221

2322
override fun alwaysUpdateVersions() {
2423
this.alwaysUpdateVersions = true
2524
}
2625

27-
var useFqqnFor: List<String> = emptyList()
28-
var alwaysUpdateVersions = false
29-
3026
// Use @Transient for fields that should not be present in toString()
3127
override fun toString(): String = PluginConfig.extensionAdapter.toJson(this)
3228

plugin/src/main/kotlin/de/fayard/internal/DependencyGraph.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.fayard.internal
22

33
import com.squareup.kotlinpoet.FileSpec
4+
import de.fayard.VersionsOnlyMode
45

56
data class KotlinPoetry(
67
val Libs: FileSpec,
@@ -83,10 +84,15 @@ data class SingleModeResult(
8384
val endOfBlock: Int,
8485
val indentation: String
8586
) {
87+
fun isBlockNotFound(): Boolean {
88+
return startOfBlock == -1 && endOfBlock == -1
89+
}
90+
91+
fun isNewFile() = startOfBlock == 0 && endOfBlock == 0
8692

8793
companion object {
88-
val NEW_FILE = SingleModeResult(0, 0, "")
89-
val BLOC_NOT_FOUND = SingleModeResult(-1, -1, PluginConfig.INDENT_FROM_EDITOR_CONFIG)
94+
fun blockNotFound(versionMode: VersionsOnlyMode) = SingleModeResult(-1, -1, versionMode.defaultIndent)
95+
fun newFile(versionMode: VersionsOnlyMode) = SingleModeResult(0, 0, versionMode.defaultIndent)
9096
}
9197
}
9298

plugin/src/main/kotlin/de/fayard/internal/KotlinPoetry.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ import org.gradle.plugin.use.PluginDependenciesSpec
1212
import org.gradle.plugin.use.PluginDependencySpec
1313

1414

15-
fun kotlinpoet(versions: List<Dependency>, gradleConfig: GradleConfig, extension: BuildSrcVersionsExtension): KotlinPoetry {
15+
fun kotlinpoet(
16+
versions: List<Dependency>,
17+
gradleConfig: GradleConfig,
18+
extension: BuildSrcVersionsExtension,
19+
indent: String
20+
): KotlinPoetry {
1621

1722

1823
val gradleVersion = constStringProperty(
@@ -42,12 +47,12 @@ fun kotlinpoet(versions: List<Dependency>, gradleConfig: GradleConfig, extension
4247

4348

4449
val LibsFile = FileSpec.builder("", extension.renameLibs)
45-
.indent(extension.indent)
50+
.indent(indent)
4651
.addType(Libs)
4752
.build()
4853

4954
val VersionsFile = FileSpec.builder("", extension.renameVersions)
50-
.indent(extension.indent)
55+
.indent(indent)
5156
.addType(Versions)
5257
.apply { addMaybeBuildSrcVersions(versions, extension) }
5358
.build()

plugin/src/main/kotlin/de/fayard/internal/PluginConfig.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ object PluginConfig {
1717

1818

1919
const val PLUGIN_ID = "de.fayard.buildSrcVersions"
20-
const val PLUGIN_VERSION = "0.6.3" // plugin.de.fayard.buildSrcVersions
20+
const val PLUGIN_VERSION = "0.6.4" // plugin.de.fayard.buildSrcVersions
2121
const val GRADLE_VERSIONS_PLUGIN_ID = "com.github.ben-manes.versions"
2222
const val GRADLE_VERSIONS_PLUGIN_VERSION = "0.25.0" // Sync with plugin/build.gradle.kts
2323
const val EXTENSION_NAME = "buildSrcVersions"
@@ -81,7 +81,6 @@ object PluginConfig {
8181

8282
const val DEFAULT_LIBS = "Libs"
8383
const val DEFAULT_VERSIONS = "Versions"
84-
const val INDENT_FROM_EDITOR_CONFIG = "from-editorconfig-file"
8584
const val SPACES4 = " "
8685
const val SPACES2 = " "
8786
const val SPACES0 = ""

0 commit comments

Comments
 (0)