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.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"
|
||||
}
|
||||
@ -35,7 +35,7 @@ object Extras {
|
||||
// set for the project
|
||||
const val description = "Gradle Plugin to manage various Gradle tasks, such as updating gradle and dependencies"
|
||||
const val group = "com.dorkbox"
|
||||
const val version = "1.4"
|
||||
const val version = "1.5"
|
||||
|
||||
// set as project.ext
|
||||
const val name = "Gradle Utils"
|
||||
@ -79,6 +79,9 @@ sourceSets {
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
url = uri("https://plugins.gradle.org/m2/")
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@ -90,6 +93,7 @@ dependencies {
|
||||
// setup checking for the latest version of a plugin or dependency
|
||||
implementation("com.github.ben-manes:gradle-versions-plugin:0.28.0")
|
||||
|
||||
// for parsing JSON
|
||||
implementation("org.json:json:20180813")
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,9 @@
|
||||
package dorkbox.gradle
|
||||
|
||||
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.wrapper.Wrapper
|
||||
import org.gradle.util.GradleVersion
|
||||
@ -24,36 +27,17 @@ import java.net.URL
|
||||
|
||||
open class
|
||||
GradleUpdateTask : DefaultTask() {
|
||||
@Volatile var foundGradleVersion : String? = "0.0"
|
||||
private val wrapper = project.tasks.create("wrapperUpdate", Wrapper::class.java)
|
||||
private val releaseText: String
|
||||
|
||||
init {
|
||||
outputs.upToDateWhen { false }
|
||||
outputs.cacheIf { false }
|
||||
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
|
||||
fun run() {
|
||||
val releaseText = URL("https://services.gradle.org/versions/current").readText()
|
||||
val foundGradleVersion = JSONObject(releaseText)["version"] as String?
|
||||
|
||||
if (foundGradleVersion.isNullOrEmpty()) {
|
||||
println("\tUnable to detect New Gradle Version. Output json: $releaseText")
|
||||
}
|
||||
@ -64,6 +48,19 @@ GradleUpdateTask : DefaultTask() {
|
||||
println("\tGradle is already latest version '$foundGradleVersion'")
|
||||
} else {
|
||||
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 org.gradle.api.Plugin
|
||||
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) {
|
||||
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"
|
||||
}
|
||||
|
||||
@ -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