Skip to content

Commit 6ca968e

Browse files
committed
Minor improvments
- Document a few implementation details - Use Version catalog - Upgrade Gradle Publish Plugin - Rearange Jitpack in repository hierarchy - Use Kotlin DSL method for registering download task - Specify correct platform type for Project.lavalink - Only run publish CI on tagss
1 parent 93d44a2 commit 6ca968e

File tree

6 files changed

+23
-12
lines changed

6 files changed

+23
-12
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
GRADLE_CONFIG: ${{ secrets.GRADLE_CONFIG }}
2525
run: echo "$GRADLE_CONFIG" > ~/.gradle/gradle.properties
2626
- name: Publish Plugin
27-
if: github.ref == 'refs/heads/main'
27+
if: startsWith(github.ref, 'refs/tags/')
2828
env:
2929
MAVEN_USERNAME: ${{ vars.MAVEN_USERNAME }}
3030
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
plugins {
22
`kotlin-dsl`
33
`java-gradle-plugin`
4-
id("com.gradle.plugin-publish") version "1.1.0"
4+
alias(libs.plugins.gradle.publish)
55
`maven-publish`
66
}
77

88
group = "dev.arbjerg"
9-
version = "1.0.5"
9+
version = "1.0.6"
1010

1111
repositories {
1212
mavenCentral()

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
[plugins]
2+
gradle-publish = { id = "com.gradle.plugin-publish", version = "1.2.0" }

src/main/kotlin/DependencyHelpers.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import org.gradle.api.provider.ProviderConvertible
99
/**
1010
* Creates a Lavalink dependency with name [module].
1111
*/
12-
fun Project.lavalink(module: String, group: String = "dev.arbjerg.lavalink") = extension.apiVersion.map { version ->
12+
fun Project.lavalink(module: String, group: String = "dev.arbjerg.lavalink"): Provider<Dependency> = extension.apiVersion.map { version ->
1313
dependencies.create("$group:$module:$version")
1414
}
1515

src/main/kotlin/LavalinkGradlePlugin.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ private fun Project.configureExtension(): LavalinkExtension {
3939
private fun Project.configureDependencies(): Provider<Dependency> {
4040
project.repositories {
4141
mavenCentral()
42+
maven("https://jitpack.io")
4243
// Required for runtime
4344
maven("https://maven.arbjerg.dev/releases")
4445
maven("https://maven.arbjerg.dev/snapshots")
4546
// Required for Lavalink Dependencies
4647
@Suppress("DEPRECATION")
4748
jcenter()
48-
maven("https://jitpack.io")
4949
}
5050

5151
dependencies {
@@ -96,14 +96,17 @@ private fun Project.configureTasks(serverDependency: Provider<Dependency>) {
9696
val installPlugin by registering(Copy::class) {
9797
from(jar)
9898
into(project.testServerFolder)
99+
// This always deletes old versions of the plugin in the test server
100+
// So we don't install the same plugin twice
99101
rename { "plugin.jar" }
100102
}
101103

102-
val downloadTask =
103-
register("downloadLavalink", DownloadLavalinkTask::class.java, constructorArgs = arrayOf(serverDependency))
104+
val downloadLavalink by registering(DownloadLavalinkTask::class) {
105+
dependencyProvider = serverDependency
106+
}
104107

105108
register<RunLavalinkTask>("runLavaLink") {
106-
dependsOn(installPlugin, downloadTask)
109+
dependsOn(installPlugin, downloadLavalink)
107110
}
108111
}
109112
}

src/main/kotlin/tasks/DownloadLavalinkTask.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,29 @@ import org.gradle.api.DefaultTask
55
import org.gradle.api.Project
66
import org.gradle.api.artifacts.Configuration
77
import org.gradle.api.artifacts.Dependency
8+
import org.gradle.api.provider.Property
89
import org.gradle.api.provider.Provider
10+
import org.gradle.api.tasks.Input
11+
import org.gradle.api.tasks.Internal
912
import org.gradle.api.tasks.TaskAction
1013
import java.nio.file.Path
11-
import javax.inject.Inject
1214
import kotlin.io.path.div
1315

1416
internal val Project.lavalinkJar: Provider<Path>
1517
get() = provider {
1618
project.gradle.gradleUserHomeDir.toPath() / "lavalink-versions" / extension.serverVersion.get() / "Lavalink.jar"
1719
}
1820

19-
abstract class DownloadLavalinkTask @Inject constructor(private val dependencyProvider: Provider<Dependency>) :
20-
DefaultTask() {
21+
abstract class DownloadLavalinkTask : DefaultTask() {
22+
@get:Internal
23+
internal abstract val dependencyProvider: Property<Dependency>
24+
25+
@Suppress("unused") // only exists for input snapshotting
26+
@get:Input
27+
val version: Provider<String>
28+
get() = dependencyProvider.map { it.version!! }
2129

2230
init {
23-
inputs.property("dependency", dependencyProvider.map { it.version.toString() })
2431
outputs.dir(project.gradle.gradleUserHomeDir.toPath() / "lavalink-versions")
2532
}
2633

0 commit comments

Comments
 (0)