Fixed issues with updating gradle wrapper version. Added kotlin extension functions
This commit is contained in:
parent
c16f724c6e
commit
caadae8823
@ -26,7 +26,7 @@ plugins {
|
|||||||
|
|
||||||
id("com.dorkbox.Licensing") version "1.3"
|
id("com.dorkbox.Licensing") version "1.3"
|
||||||
id("com.dorkbox.VersionUpdate") version "1.6.1"
|
id("com.dorkbox.VersionUpdate") version "1.6.1"
|
||||||
id("com.dorkbox.GradleUtils") version "1.4"
|
id("com.dorkbox.GradleUtils") version "1.5"
|
||||||
|
|
||||||
kotlin("jvm") version "1.3.72"
|
kotlin("jvm") version "1.3.72"
|
||||||
}
|
}
|
||||||
@ -35,7 +35,7 @@ object Extras {
|
|||||||
// set for the project
|
// set for the project
|
||||||
const val description = "Gradle Plugin to manage various Gradle tasks, such as updating gradle and dependencies"
|
const val description = "Gradle Plugin to manage various Gradle tasks, such as updating gradle and dependencies"
|
||||||
const val group = "com.dorkbox"
|
const val group = "com.dorkbox"
|
||||||
const val version = "1.4"
|
const val version = "1.5"
|
||||||
|
|
||||||
// set as project.ext
|
// set as project.ext
|
||||||
const val name = "Gradle Utils"
|
const val name = "Gradle Utils"
|
||||||
@ -79,6 +79,9 @@ sourceSets {
|
|||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
jcenter()
|
||||||
|
maven {
|
||||||
|
url = uri("https://plugins.gradle.org/m2/")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@ -90,6 +93,7 @@ dependencies {
|
|||||||
// setup checking for the latest version of a plugin or dependency
|
// setup checking for the latest version of a plugin or dependency
|
||||||
implementation("com.github.ben-manes:gradle-versions-plugin:0.28.0")
|
implementation("com.github.ben-manes:gradle-versions-plugin:0.28.0")
|
||||||
|
|
||||||
|
// for parsing JSON
|
||||||
implementation("org.json:json:20180813")
|
implementation("org.json:json:20180813")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,9 @@
|
|||||||
package dorkbox.gradle
|
package dorkbox.gradle
|
||||||
|
|
||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
|
import org.gradle.api.tasks.Input
|
||||||
|
import org.gradle.api.tasks.Internal
|
||||||
|
import org.gradle.api.tasks.Optional
|
||||||
import org.gradle.api.tasks.TaskAction
|
import org.gradle.api.tasks.TaskAction
|
||||||
import org.gradle.api.tasks.wrapper.Wrapper
|
import org.gradle.api.tasks.wrapper.Wrapper
|
||||||
import org.gradle.util.GradleVersion
|
import org.gradle.util.GradleVersion
|
||||||
@ -24,36 +27,17 @@ import java.net.URL
|
|||||||
|
|
||||||
open class
|
open class
|
||||||
GradleUpdateTask : DefaultTask() {
|
GradleUpdateTask : DefaultTask() {
|
||||||
@Volatile var foundGradleVersion : String? = "0.0"
|
|
||||||
private val wrapper = project.tasks.create("wrapperUpdate", Wrapper::class.java)
|
|
||||||
private val releaseText: String
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
outputs.upToDateWhen { false }
|
outputs.upToDateWhen { false }
|
||||||
outputs.cacheIf { false }
|
outputs.cacheIf { false }
|
||||||
description = "Automatically update GRADLE to the latest version"
|
description = "Automatically update GRADLE to the latest version"
|
||||||
|
|
||||||
releaseText = URL("https://services.gradle.org/versions/current").readText()
|
|
||||||
foundGradleVersion = JSONObject(releaseText)["version"] as String?
|
|
||||||
|
|
||||||
if (foundGradleVersion != "0.0") {
|
|
||||||
wrapper.apply {
|
|
||||||
group = "gradle"
|
|
||||||
outputs.upToDateWhen { false }
|
|
||||||
outputs.cacheIf { false }
|
|
||||||
|
|
||||||
gradleVersion = foundGradleVersion
|
|
||||||
distributionUrl = distributionUrl.replace("bin", "all")
|
|
||||||
}
|
|
||||||
|
|
||||||
finalizedBy(wrapper)
|
|
||||||
} else {
|
|
||||||
println("\tUnable to detect New Gradle Version.")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
fun run() {
|
fun run() {
|
||||||
|
val releaseText = URL("https://services.gradle.org/versions/current").readText()
|
||||||
|
val foundGradleVersion = JSONObject(releaseText)["version"] as String?
|
||||||
|
|
||||||
if (foundGradleVersion.isNullOrEmpty()) {
|
if (foundGradleVersion.isNullOrEmpty()) {
|
||||||
println("\tUnable to detect New Gradle Version. Output json: $releaseText")
|
println("\tUnable to detect New Gradle Version. Output json: $releaseText")
|
||||||
}
|
}
|
||||||
@ -64,6 +48,19 @@ GradleUpdateTask : DefaultTask() {
|
|||||||
println("\tGradle is already latest version '$foundGradleVersion'")
|
println("\tGradle is already latest version '$foundGradleVersion'")
|
||||||
} else {
|
} else {
|
||||||
println("\tDetected new Gradle Version: '$foundGradleVersion', updating from $current")
|
println("\tDetected new Gradle Version: '$foundGradleVersion', updating from $current")
|
||||||
|
|
||||||
|
val wrapper = project.tasks.create("wrapperUpdate", Wrapper::class.java)
|
||||||
|
wrapper.apply {
|
||||||
|
group = "other"
|
||||||
|
outputs.upToDateWhen { false }
|
||||||
|
outputs.cacheIf { false }
|
||||||
|
|
||||||
|
gradleVersion = foundGradleVersion
|
||||||
|
distributionUrl = distributionUrl.replace("bin", "all")
|
||||||
|
distributionType = Wrapper.DistributionType.ALL
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapper.actions[0].execute(wrapper)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,10 @@ package dorkbox.gradle
|
|||||||
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
|
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
|
||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
|
import org.gradle.api.tasks.SourceSet
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -32,7 +36,7 @@ class GradleUtils : Plugin<Project> {
|
|||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
propertyMappingExtension = project.extensions.create("GradleUtils", StaticMethodsAndTools::class.java, project)
|
propertyMappingExtension = project.extensions.create("GradleUtils", StaticMethodsAndTools::class.java, project)
|
||||||
|
|
||||||
project.tasks.create("autoUpdateGradle", GradleUpdateTask::class.java).apply {
|
project.tasks.create("updateGradleWrapper", GradleUpdateTask::class.java).apply {
|
||||||
group = "gradle"
|
group = "gradle"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,3 +64,20 @@ class GradleUtils : Plugin<Project> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Fix defaults for gradle, since it's mildly retarded when it comes to kotlin, so we can have sane sourceset/configuration options
|
||||||
|
// from: https://github.com/gradle/kotlin-dsl-samples/blob/201534f53d93660c273e09f768557220d33810a9/buildSrc/src/main/kotlin/build/KotlinPluginExtensions.kt
|
||||||
|
val SourceSet.kotlin: SourceDirectorySet
|
||||||
|
get() =
|
||||||
|
(this as org.gradle.api.internal.HasConvention)
|
||||||
|
.convention
|
||||||
|
.getPlugin(KotlinSourceSet::class.java)
|
||||||
|
.kotlin
|
||||||
|
|
||||||
|
fun SourceSet.kotlin(action: SourceDirectorySet.() -> Unit) =
|
||||||
|
kotlin.action()
|
||||||
|
|
||||||
|
val Project.sourceSets: SortedMap<String, SourceSet>
|
||||||
|
get() = (this.extensions.getByName("sourceSets") as org.gradle.api.tasks.SourceSetContainer).asMap
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user