Skip to content

Commit 8b57065

Browse files
committed
fix: refactor and fix various bugs
1 parent cce73d0 commit 8b57065

18 files changed

+260
-210
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,12 @@ allay {
3939
// The default value is `null`.
4040
server = null
4141

42+
// Whether to generate the plugin descriptor (plugin.json).
43+
// The default value is `true`.
44+
generatePluginDescriptor = true
45+
4246
// Configure the plugin descriptor (plugin.json).
47+
// This would be ignored if `generatePluginDescriptor` is set to `false`.
4348
plugin {
4449
entrance = "org.allaymc.gradle.sample.TestPlugin"
4550
// Or use the relative path if the project's group is set.

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[versions]
2-
allay-gradle = "0.1.2"
2+
allay-gradle = "0.2.0-SNAPSHOT"
33
gradle-plugin-publish = "2.0.0"
44
kotlin = "1.9.23"
55
kotlinx-serialization = "1.5.0"

plugin/src/main/kotlin/org/allaymc/gradle/plugin/AllayExtension.kt

Lines changed: 0 additions & 61 deletions
This file was deleted.
Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
package org.allaymc.gradle.plugin
22

3-
import org.allaymc.gradle.plugin.descriptor.descriptorInject
3+
import org.allaymc.gradle.plugin.dsl.AllayDslExtension
4+
import org.allaymc.gradle.plugin.tasks.GeneratePluginDescriptorTask
5+
import org.allaymc.gradle.plugin.tasks.RunServerTask
6+
import org.allaymc.gradle.plugin.tasks.ShadowJarTask
47
import org.gradle.api.Plugin
58
import org.gradle.api.Project
6-
import org.gradle.api.tasks.SourceSetContainer
79
import org.gradle.jvm.tasks.Jar
8-
import org.gradle.kotlin.dsl.*
10+
import org.gradle.kotlin.dsl.dependencies
11+
import org.gradle.kotlin.dsl.maven
12+
import org.gradle.kotlin.dsl.register
13+
import org.gradle.kotlin.dsl.repositories
914

1015
class AllayPlugin : Plugin<Project> {
1116
override fun apply(project: Project) {
12-
val extension = project.extensions.create("allay", AllayExtension::class.java, project.objects)
17+
val extension = project.extensions.create("allay", AllayDslExtension::class.java, project.objects)
1318

1419
project.repositories {
1520
mavenCentral()
@@ -30,7 +35,7 @@ class AllayPlugin : Plugin<Project> {
3035
project.afterEvaluate { afterEvaluate(project, extension) }
3136
}
3237

33-
private fun afterEvaluate(project: Project, extension: AllayExtension) {
38+
private fun afterEvaluate(project: Project, extension: AllayDslExtension) {
3439
val api = extension.api.orNull
3540
val server = extension.server.orNull
3641

@@ -41,8 +46,8 @@ class AllayPlugin : Plugin<Project> {
4146
}
4247

4348
val dependency = if (!extension.apiOnly.get())
44-
"${Constant.DEPENDENCY_GROUP}:server:${server}"
45-
else "${Constant.DEPENDENCY_GROUP}:api:${api}"
49+
"${Constants.DEPENDENCY_GROUP}:server:${server}"
50+
else "${Constants.DEPENDENCY_GROUP}:api:${api}"
4651
project.dependencies {
4752
add("compileOnly", dependency)
4853
}
@@ -53,31 +58,36 @@ class AllayPlugin : Plugin<Project> {
5358
) {
5459
project.tasks.named("shadowJar", Jar::class.java)
5560
} else {
56-
createShadowJarImplement(project)
61+
project.tasks.register<ShadowJarTask>("shadowJar")
5762
}
5863

5964
project.tasks.register<RunServerTask>("runServer") {
60-
group = Constant.TASK_GROUP
6165
dependsOn(shadowJarTask)
6266
pluginJar.set(shadowJarTask.flatMap { it.archiveFile })
6367
serverVersion.set(server)
6468
}
6569

66-
if (extension.descriptorInjection.get()) {
67-
descriptorInject(project, extension)
68-
}
69-
}
70+
if (extension.generatePluginDescriptor.get()) {
71+
val generatePluginDescriptorTask = project.tasks.register<GeneratePluginDescriptorTask>("generatePluginDescriptor") {
72+
outputFile.set(project.layout.buildDirectory.file("resources/main/plugin.json"))
73+
74+
pluginEntrance.set(extension.plugin.entrance)
75+
pluginName.set(extension.plugin.name)
76+
pluginVersion.set(extension.plugin.version)
77+
pluginAuthors.set(extension.plugin.authors)
78+
pluginApiVersion.set(extension.plugin.apiVersion)
79+
pluginDescription.set(extension.plugin.description)
80+
pluginDependencies.set(extension.plugin.dependencies)
81+
pluginWebsite.set(extension.plugin.website)
7082

71-
private fun createShadowJarImplement(project: Project) = project.tasks.register("shadowJar", Jar::class.java) {
72-
group = Constant.TASK_GROUP
73-
archiveClassifier.set("shaded")
74-
val sourceSets = project.extensions.getByType(SourceSetContainer::class.java)
75-
from(sourceSets.getByName("main").output)
76-
val runtimeClasspath = project.configurations.getByName("runtimeClasspath")
77-
from({
78-
runtimeClasspath.filter { it.exists() }.map {
79-
if (it.isDirectory) it else project.zipTree(it)
83+
projectName.set(project.name)
84+
projectVersion.set(project.version.toString())
85+
projectDescription.set(project.description)
8086
}
81-
})
87+
88+
project.tasks.named("processResources") {
89+
dependsOn(generatePluginDescriptorTask)
90+
}
91+
}
8292
}
8393
}

plugin/src/main/kotlin/org/allaymc/gradle/plugin/Constant.kt renamed to plugin/src/main/kotlin/org/allaymc/gradle/plugin/Constants.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.allaymc.gradle.plugin
22

3-
object Constant {
3+
object Constants {
44
const val TASK_GROUP = "allay"
55
const val DEPENDENCY_GROUP = "org.allaymc.allay"
66
const val SERVER_MAIN_CLASS = "org.allaymc.server.Allay"

plugin/src/main/kotlin/org/allaymc/gradle/plugin/ExtensionMarker.kt

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.allaymc.gradle.plugin.data
2+
3+
import kotlinx.serialization.Serializable
4+
5+
@Serializable
6+
data class PluginDependency(val name: String, val version: String?, val optional: Boolean?)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.allaymc.gradle.plugin.data
2+
3+
import kotlinx.serialization.SerialName
4+
import kotlinx.serialization.Serializable
5+
6+
@Serializable
7+
data class PluginDescriptor(
8+
val entrance: String,
9+
val name: String,
10+
val version: String,
11+
val authors: List<String>,
12+
@SerialName("api_version")
13+
val apiVersion: String?,
14+
val description: String?,
15+
val dependencies: List<PluginDependency>?,
16+
val website: String?,
17+
) {
18+
}

plugin/src/main/kotlin/org/allaymc/gradle/plugin/descriptor/DescriptorException.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.

plugin/src/main/kotlin/org/allaymc/gradle/plugin/descriptor/DescriptorInjector.kt

Lines changed: 0 additions & 87 deletions
This file was deleted.

0 commit comments

Comments
 (0)