Skip to content

Commit a1f52ba

Browse files
committed
Add support to specify dependencies
1 parent 05a7ffe commit a1f52ba

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

src/main/kotlin/LavalinkGradlePlugin.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class LavalinkGradlePlugin : Plugin<Project> {
2626
override fun apply(target: Project) {
2727
with(target) {
2828
check(plugins.hasPlugin("org.gradle.java")) { "Please apply the Java/Kotlin plugin before Lavalink" }
29+
configureConfigurations()
2930
val extension = configureExtension()
3031
configurePublishing()
3132
val serverDependency = configureDependencies()
@@ -38,6 +39,17 @@ class LavalinkGradlePlugin : Plugin<Project> {
3839
}
3940
}
4041

42+
private fun Project.configureConfigurations() {
43+
configurations {
44+
val plugin by creating
45+
val optionalPlugin by creating
46+
47+
named("compileOnly") {
48+
extendsFrom(plugin, optionalPlugin)
49+
}
50+
}
51+
}
52+
4153
private fun Project.configureExtension(): LavalinkExtension {
4254
@Suppress("DEPRECATION")
4355
return extensions.create<LavalinkExtension>(lavalinkExtensionName).apply {

src/main/kotlin/tasks/GeneratePluginPropertiesTask.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package dev.arbjerg.lavalink.gradle.tasks
33
import dev.arbjerg.lavalink.gradle.extension
44
import org.gradle.api.DefaultTask
55
import org.gradle.api.Project
6+
import org.gradle.api.artifacts.Dependency
67
import org.gradle.api.file.Directory
78
import org.gradle.api.provider.Provider
89
import org.gradle.api.tasks.TaskAction
@@ -37,13 +38,17 @@ abstract class GeneratePluginPropertiesTask : DefaultTask() {
3738

3839
private val extension = project.extension
3940
private val generatedPluginManifest = project.generatedPluginManifest
41+
private val dependencies = project.buildDependenciesString()
4042

4143
@TaskAction
4244
fun generateTask() {
4345
val properties = Properties().apply {
4446
set("plugin.id", extension.name.get())
4547
set("plugin.version", extension.version.get())
4648
set("plugin.requires", extension.requires.get())
49+
if (dependencies.isNotBlank()) {
50+
set("plugin.dependencies", dependencies)
51+
}
4752
setIfPresent("plugin.provider", extension.provider)
4853
setIfPresent("plugin.license", extension.license)
4954
}
@@ -54,6 +59,21 @@ abstract class GeneratePluginPropertiesTask : DefaultTask() {
5459
properties.store(writer, null)
5560
}
5661
}
62+
63+
}
64+
65+
private fun Project.buildDependenciesString(): String {
66+
val plugin = configurations.getByName("plugin")
67+
val optionalPlugin = configurations.getByName("optionalPlugin")
68+
69+
val required = plugin.allDependencies.map(Dependency::toDependencyString)
70+
val optional = optionalPlugin.allDependencies.map { it.toDependencyString(true) }
71+
72+
return (required + optional).joinToString(", ")
73+
}
74+
75+
private fun Dependency.toDependencyString(optional: Boolean = false): String {
76+
return "$name${if (optional) "?" else ""}@$version"
5777
}
5878

5979
private fun Properties.setIfPresent(name: String, value: Provider<String>) {

0 commit comments

Comments
 (0)