Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
Jean-Michel Fayard committed Sep 12, 2019
2 parents 612be00 + 8960f99 commit 691576a
Show file tree
Hide file tree
Showing 24 changed files with 152 additions and 62 deletions.
2 changes: 1 addition & 1 deletion composite/build.gradle.kts
@@ -1,6 +1,6 @@
plugins {
idea
`build-scan`
idea
}

group = "de.fayard"
Expand Down
11 changes: 9 additions & 2 deletions plugin/build.gradle.kts
@@ -1,16 +1,23 @@
import de.fayard.VersionsOnlyMode
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
id("de.fayard.buildSrcVersions") version "0.5.0"
id("com.gradle.plugin-publish") version "0.10.0"
`java-gradle-plugin`
`kotlin-dsl`
`maven-publish`
`kotlin-dsl`
`build-scan`
id("com.gradle.plugin-publish") version "0.10.0"
}

group = "de.fayard"
version = "0.5.0"

buildSrcVersions {
versionsOnlyMode = VersionsOnlyMode.GRADLE_PROPERTIES
versionsOnlyFile = "gradle.properties"
}

gradlePlugin {
plugins {
create("buildSrcVersions") {
Expand Down
34 changes: 34 additions & 0 deletions plugin/gradle.properties
@@ -0,0 +1,34 @@
# Plugin versions
# See https://github.com/jmfayard/buildSrcVersions/issues/60
plugin.org.gradle.kotlin.kotlin-dsl=1.2.9
plugin.de.fayard.buildSrcVersions=0.5.0
plugin.com.gradle.plugin-publish=0.10.0
plugin.com.gradle.build-scan=2.4.1



# <buildSrcVersions>
# Generated by ./gradle buildSrcVersions
# See https://github.com/jmfayard/buildSrcVersions/issues/54
org_gradle_kotlin_kotlin_dsl_gradle_plugin=1.2.9
de_fayard_buildsrcversions_gradle_plugin=0.5.0
com_gradle_plugin_publish_gradle_plugin=0.10.0
com_gradle_build_scan_gradle_plugin=2.4.1
kotlintest_runner_junit5=3.1.9
gradle_versions_plugin=0.25.0
gradleCurrentVersion=5.6.2
org_jetbrains_kotlin=1.3.41
gradleLatestVersion=5.6.2
kotlinpoet=1.3.0
moshi=1.7.0
okio=2.1.0

## Available updates ##
#org_gradle_kotlin_kotlin_dsl_gradle_plugin=1.2.11
#com_gradle_plugin_publish_gradle_plugin=0.10.1
#com_gradle_build_scan_gradle_plugin=2.4.2
#kotlintest_runner_junit5=3.4.1
#org_jetbrains_kotlin=1.3.50
#moshi=1.8.0
# </buildSrcVersions>
# You can edit the rest of the file, it will be kept intact
12 changes: 12 additions & 0 deletions plugin/settings.gradle.kts
@@ -1,2 +1,14 @@
pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
}
resolutionStrategy.eachPlugin {
val key = "plugin.${requested.id.id}"
if (extra.has(key)) {
useVersion(extra.get(key) as String)
}
}
}
rootProject.name = "plugin"

15 changes: 7 additions & 8 deletions plugin/src/main/kotlin/de/fayard/BuildSrcVersionsTask.kt
Expand Up @@ -69,12 +69,7 @@ open class BuildSrcVersionsTask : DefaultTask() {
checkIfFilesExistInitiallyAndCreateThem(project)
}

val sortedDependencies = when {
OutputFile.VERSIONS.existed -> dependencies
else -> dependencies.sortedByDescending { it.versionName.length }
}

val kotlinPoetry: KotlinPoetry = kotlinpoet(sortedDependencies, dependencyGraph.gradle, extension)
val kotlinPoetry: KotlinPoetry = kotlinpoet(dependencies, dependencyGraph.gradle, extension)

if (generatesAll) {
kotlinPoetry.Libs.writeTo(outputDir)
Expand All @@ -97,17 +92,21 @@ open class BuildSrcVersionsTask : DefaultTask() {
val classpath: Configuration = it.buildscript.configurations.named("classpath").get()
classpath.allDependencies.withType()
}
val sortedDependencies = dependencies
.sortedBeautifullyBy { it.group }
.distinctBy { it.group }

val file = project.file("gradle.properties")
if (!file.exists()) file.createNewFile()

val existingLines = file.readLines().filterNot {
it.startsWith("plugin.") || it in PluginConfig.PLUGIN_NFORMATION_START + PluginConfig.PLUGIN_INFORMATION_END
}
val newLines = dependencies.map { it ->
val newLines = sortedDependencies.map { it ->
"plugin.${it.group}=${it.version}"
}
val newFileContent = PluginConfig.PLUGIN_NFORMATION_START + newLines + existingLines + PluginConfig.PLUGIN_INFORMATION_END
file.writeText(newFileContent.joinToString(separator = "\n", postfix = "\n"))
file.writeText(newFileContent.joinToString(separator = "\n"))
}


Expand Down
10 changes: 9 additions & 1 deletion plugin/src/main/kotlin/de/fayard/KotlinPoetry.kt
Expand Up @@ -47,6 +47,12 @@ fun kotlinpoet(versions: List<Dependency>, gradleConfig: GradleConfig, extension

}

// https://github.com/jmfayard/buildSrcVersions/issues/65
fun <T> List<T>.sortedBeautifullyBy(exceptIf: Boolean = false, selection: (T) -> String?) : List<T> =
this.filterNot { selection(it) == null }
.sortedBy { selection(it)!! }
.sortedByDescending { selection(it)!!.length }

fun FileSpec.Builder.addMaybeBuildSrcVersions(versions: List<Dependency>, extension: BuildSrcVersionsExtension) {
versions.firstOrNull {
it.name in listOf("de.fayard.buildSrcVersions.gradle.plugin", "buildSrcVersions-plugin")
Expand Down Expand Up @@ -138,7 +144,9 @@ fun parseGraph(
d.escapedName = key
}
}
return dependencies.orderDependencies().findCommonVersions()
return dependencies
.findCommonVersions()
.sortedBeautifullyBy(exceptIf = OutputFile.VERSIONS.existed) { it.versionName }
}

fun Dependency.fdqnName(): String = escapeName("${group}_${name}")
Expand Down
2 changes: 1 addition & 1 deletion plugin/src/main/kotlin/de/fayard/PluginConfig.kt
Expand Up @@ -113,7 +113,7 @@ repositories {
"# See https://github.com/jmfayard/buildSrcVersions/issues/60"
)
val PLUGIN_INFORMATION_END = listOf(
"# You can edit the rest of the file")
"# You can edit the rest of the file, it will be kept intact")

const val GRADLE_CURRENT_VERSION = "gradleCurrentVersion"
const val GRADLE_LATEST_VERSION = "gradleLatestVersion"
Expand Down
6 changes: 2 additions & 4 deletions plugin/src/main/kotlin/de/fayard/VersionsOnlyMode.kt
Expand Up @@ -78,10 +78,8 @@ fun regenerateBuildFile(versionsOnlyFile: File?, extension: BuildSrcVersionsExte
val parseResult = parseBuildFile(versionsOnlyFile, versionsOnlyMode) ?: SingleModeResult.DEFAULT
val (startOfBlock, endOfBlock, indent) = parseResult

val sortedDependencies = dependencies
.distinctBy { d -> d.versionName }
.sortedBy { d -> d.versionName }
.sortedByDescending { d -> d.versionName.length }
val sortedDependencies = dependencies.sortedBeautifullyBy { it.versionName }
.distinctBy { it.versionName }

val newBlock = regenerateBlock(versionsOnlyMode, sortedDependencies, indent)

Expand Down
8 changes: 4 additions & 4 deletions sample-groovy/build.gradle
@@ -1,10 +1,10 @@
plugins {
id 'java'
id 'de.fayard.buildSrcVersions'
id 'io.vertx.vertx-plugin'
id 'com.gradle.build-scan'
id 'application'
id 'idea'
id "io.vertx.vertx-plugin" version "0.3.1"
id 'de.fayard.buildSrcVersions' version '0.5.0'
id 'com.gradle.build-scan' version '2.4.2'
id 'java'
}

group = "de.fayard"
Expand Down
12 changes: 6 additions & 6 deletions sample-groovy/buildSrc/src/main/kotlin/Libs.kt
Expand Up @@ -7,10 +7,6 @@ import kotlin.String
* `$ ./gradlew buildSrcVersions`
*/
object Libs {
const val guava: String = "com.google.guava:guava:" + Versions.guava

const val guice: String = "com.google.inject:guice:" + Versions.guice

const val com_gradle_build_scan_gradle_plugin: String =
"com.gradle.build-scan:com.gradle.build-scan.gradle.plugin:" +
Versions.com_gradle_build_scan_gradle_plugin
Expand All @@ -19,8 +15,12 @@ object Libs {
"io.vertx.vertx-plugin:io.vertx.vertx-plugin.gradle.plugin:" +
Versions.io_vertx_vertx_plugin_gradle_plugin

const val vertx_core: String = "io.vertx:vertx-core"

const val vertx_stack_depchain: String = "io.vertx:vertx-stack-depchain:" +
Versions.vertx_stack_depchain

const val vertx_core: String = "io.vertx:vertx-core"

const val guava: String = "com.google.guava:guava:" + Versions.guava

const val guice: String = "com.google.inject:guice:" + Versions.guice
}
10 changes: 5 additions & 5 deletions sample-groovy/buildSrc/src/main/kotlin/Versions.kt
Expand Up @@ -10,17 +10,17 @@ import kotlin.String
* YOU are responsible for updating manually the dependency version.
*/
object Versions {
const val guava: String = "15.0"

const val guice: String = "2.0"

const val com_gradle_build_scan_gradle_plugin: String = "2.4.2"

const val io_vertx_vertx_plugin_gradle_plugin: String = "0.3.1"

const val vertx_stack_depchain: String = "3.6.2"

const val vertx_core: String = "none"// No version. See buildSrcVersions#23

const val vertx_stack_depchain: String = "3.6.2"
const val guava: String = "15.0"

const val guice: String = "2.0"

/**
*
Expand Down
4 changes: 2 additions & 2 deletions sample-groovy/gradle.properties
@@ -1,6 +1,6 @@
# Plugin versions
# See https://github.com/jmfayard/buildSrcVersions/issues/60
plugin.io.vertx.vertx-plugin=0.3.1
plugin.com.gradle.build-scan=2.4.2
# You can edit the rest of the file
plugin.io.vertx.vertx-plugin=0.3.1

# You can edit the rest of the file, it will be kept intact
4 changes: 2 additions & 2 deletions sample-kotlin/build.gradle.kts
Expand Up @@ -2,8 +2,8 @@ import de.fayard.PluginConfig.isNonStable
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
kotlin("jvm") version "1.3.11"
id("de.fayard.buildSrcVersions") version "0.5.0"
id("de.fayard.buildSrcVersions")
kotlin("jvm")
`build-scan`
}

Expand Down
26 changes: 13 additions & 13 deletions sample-kotlin/buildSrc/src/main/kotlin/Libs.kt
Expand Up @@ -7,28 +7,28 @@ import kotlin.String
* `$ ./gradlew buildSrcVersions`
*/
object Libs {
/**
* https://github.com/google/guava
*/
const val guava: String = "com.google.guava:guava:" + Versions.guava
const val org_jetbrains_kotlin_jvm_gradle_plugin: String =
"org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:" +
Versions.org_jetbrains_kotlin_jvm_gradle_plugin

/**
* https://github.com/google/guice
* https://kotlinlang.org/
*/
const val guice: String = "com.google.inject:guice:" + Versions.guice
const val kotlin_scripting_compiler_embeddable: String =
"org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:" +
Versions.kotlin_scripting_compiler_embeddable

const val com_gradle_build_scan_gradle_plugin: String =
"com.gradle.build-scan:com.gradle.build-scan.gradle.plugin:" +
Versions.com_gradle_build_scan_gradle_plugin

const val org_jetbrains_kotlin_jvm_gradle_plugin: String =
"org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:" +
Versions.org_jetbrains_kotlin_jvm_gradle_plugin
/**
* https://github.com/google/guava
*/
const val guava: String = "com.google.guava:guava:" + Versions.guava

/**
* https://kotlinlang.org/
* https://github.com/google/guice
*/
const val kotlin_scripting_compiler_embeddable: String =
"org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:" +
Versions.kotlin_scripting_compiler_embeddable
const val guice: String = "com.google.inject:guice:" + Versions.guice
}
8 changes: 4 additions & 4 deletions sample-kotlin/buildSrc/src/main/kotlin/Versions.kt
Expand Up @@ -10,15 +10,15 @@ import kotlin.String
* YOU are responsible for updating manually the dependency version.
*/
object Versions {
const val guava: String = "15.0" // available: "23.0"
const val org_jetbrains_kotlin_jvm_gradle_plugin: String = "1.3.11" // available: "1.3.50"

const val guice: String = "2.0" // available: "4.2.2"
const val kotlin_scripting_compiler_embeddable: String = "1.3.11" // available: "1.3.50"

const val com_gradle_build_scan_gradle_plugin: String = "2.4.1" // available: "2.4.2"

const val org_jetbrains_kotlin_jvm_gradle_plugin: String = "1.3.11" // available: "1.3.50"
const val guava: String = "15.0" // available: "23.0"

const val kotlin_scripting_compiler_embeddable: String = "1.3.11" // available: "1.3.50"
const val guice: String = "2.0" // available: "4.2.2"

/**
*
Expand Down
2 changes: 1 addition & 1 deletion sample-kotlin/gradle.properties
Expand Up @@ -2,5 +2,5 @@
# See https://github.com/jmfayard/buildSrcVersions/issues/60
plugin.org.jetbrains.kotlin.jvm=1.3.11
plugin.com.gradle.build-scan=2.4.1
# You can edit the rest of the file

# You can edit the rest of the file, it will be kept intact
5 changes: 4 additions & 1 deletion sample-versionsOnlyMode/GRADLE_PROPERTIES.properties
Expand Up @@ -3,10 +3,13 @@
# <buildSrcVersions>
# Generated by ./gradle buildSrcVersions
# See https://github.com/jmfayard/buildSrcVersions/issues/54
org_lovedev_greeting_kotlin_gradle_plugin=1.1
org_jetbrains_kotlin_jvm_gradle_plugin=1.3.50
kotlin_scripting_compiler_embeddable=1.3.50
ch_tutteli_kotlin_utils_gradle_plugin=0.29.0
com_gradle_build_scan_gradle_plugin=2.4.1
nebula_kotlin_gradle_plugin=1.3.50
gradleCurrentVersion=5.6.2
org_jetbrains_kotlin=1.3.50
gradleLatestVersion=5.6.2
guava=15.0
guice=2.0
Expand Down
5 changes: 4 additions & 1 deletion sample-versionsOnlyMode/GROOVY_DEF.gradle
Expand Up @@ -3,10 +3,13 @@
// <buildSrcVersions>
// Generated by ./gradle buildSrcVersions
// See https://github.com/jmfayard/buildSrcVersions/issues/54
def org_lovedev_greeting_kotlin_gradle_plugin = '1.1'
def org_jetbrains_kotlin_jvm_gradle_plugin = '1.3.50'
def kotlin_scripting_compiler_embeddable = '1.3.50'
def ch_tutteli_kotlin_utils_gradle_plugin = '0.29.0'
def com_gradle_build_scan_gradle_plugin = '2.4.1' // available: '2.4.2'
def nebula_kotlin_gradle_plugin = '1.3.50'
def gradleCurrentVersion = '5.6.2'
def org_jetbrains_kotlin = '1.3.50'
def gradleLatestVersion = '5.6.2'
def guava = '15.0' // available: '23.0'
def guice = '2.0' // available: '4.2.2'
Expand Down
5 changes: 4 additions & 1 deletion sample-versionsOnlyMode/GROOVY_EXT.gradle
Expand Up @@ -4,10 +4,13 @@
// Generated by ./gradle buildSrcVersions
// See https://github.com/jmfayard/buildSrcVersions/issues/54
ext {
org_lovedev_greeting_kotlin_gradle_plugin = '1.1'
org_jetbrains_kotlin_jvm_gradle_plugin = '1.3.50'
kotlin_scripting_compiler_embeddable = '1.3.50'
ch_tutteli_kotlin_utils_gradle_plugin = '0.29.0'
com_gradle_build_scan_gradle_plugin = '2.4.1' // available: '2.4.2'
nebula_kotlin_gradle_plugin = '1.3.50'
gradleCurrentVersion = '5.6.2'
org_jetbrains_kotlin = '1.3.50'
gradleLatestVersion = '5.6.2'
guava = '15.0' // available: '23.0'
guice = '2.0' // available: '4.2.2'
Expand Down
8 changes: 7 additions & 1 deletion sample-versionsOnlyMode/KOTLIN_OBJECT.kt
Expand Up @@ -10,12 +10,18 @@ import kotlin.String
* YOU are responsible for updating manually the dependency version.
*/
object Versions {
const val org_lovedev_greeting_kotlin_gradle_plugin: String = "1.1"

const val org_jetbrains_kotlin_jvm_gradle_plugin: String = "1.3.50"

const val kotlin_scripting_compiler_embeddable: String = "1.3.50"
const val ch_tutteli_kotlin_utils_gradle_plugin: String = "0.29.0"

const val com_gradle_build_scan_gradle_plugin: String = "2.4.1" // available: "2.4.2"

const val nebula_kotlin_gradle_plugin: String = "1.3.50"

const val org_jetbrains_kotlin: String = "1.3.50"

const val guava: String = "15.0" // available: "23.0"

const val guice: String = "2.0" // available: "4.2.2"
Expand Down

0 comments on commit 691576a

Please sign in to comment.