Skip to content

Commit

Permalink
fix configuration cache for paper plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
Rattlyy committed Feb 12, 2024
1 parent b79c47a commit fdfdda7
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,13 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
import org.gradle.api.DefaultTask
import org.gradle.api.NamedDomainObjectCollection
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
import org.gradle.api.artifacts.repositories.UrlArtifactRepository
import org.gradle.api.artifacts.result.ResolvedComponentResult
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.MapProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Nested
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.*

abstract class GeneratePluginDescription : DefaultTask() {

Expand All @@ -54,6 +51,9 @@ abstract class GeneratePluginDescription : DefaultTask() {
@get:Input
abstract val librariesJsonFileName: Property<String>

@get:Input
abstract val repos: MapProperty<String, String>

@get:Input
@get:Optional
abstract val librariesRootComponent: Property<ResolvedComponentResult>
Expand All @@ -74,8 +74,12 @@ abstract class GeneratePluginDescription : DefaultTask() {

val module = SimpleModule()
@Suppress("UNCHECKED_CAST") // Too stupid to figure out the generics here...
module.addSerializer(StdDelegatingSerializer(NamedDomainObjectCollection::class.java,
NamedDomainObjectCollectionConverter as Converter<NamedDomainObjectCollection<*>, *>))
module.addSerializer(
StdDelegatingSerializer(
NamedDomainObjectCollection::class.java,
NamedDomainObjectCollectionConverter as Converter<NamedDomainObjectCollection<*>, *>
)
)
module.addSerializer(StdDelegatingSerializer(UrlArtifactRepository::class.java, UrlArtifactRepositoryConverter))

val mapper = ObjectMapper(factory)
Expand All @@ -86,9 +90,8 @@ abstract class GeneratePluginDescription : DefaultTask() {
mapper.writeValue(outputDirectory.file(fileName).get().asFile, pluginDescription)

if (pluginDescription.generateLibrariesJson) {
val repos = this.project.repositories.withType(MavenArtifactRepository::class.java)
val dependencies = librariesRootComponent.orNull.collectLibraries()
val pluginLibraries = PluginLibraries(repos, dependencies)
val pluginLibraries = PluginLibraries(repos.get(), dependencies)

val jsonMapper = ObjectMapper()
.registerKotlinModule()
Expand All @@ -110,7 +113,7 @@ abstract class GeneratePluginDescription : DefaultTask() {
}

data class PluginLibraries(
val repositories: NamedDomainObjectCollection<MavenArtifactRepository>,
val repositories: Map<String, String>,
val dependencies: List<String>
)

Expand Down
8 changes: 7 additions & 1 deletion src/main/kotlin/net/minecrell/pluginyml/PlatformPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ package net.minecrell.pluginyml

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
import org.gradle.api.artifacts.result.ResolvedComponentResult
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.tasks.SourceSet
Expand All @@ -34,7 +35,8 @@ import org.gradle.kotlin.dsl.getByType
import org.gradle.kotlin.dsl.register
import org.gradle.kotlin.dsl.withType

abstract class PlatformPlugin<T : PluginDescription>(private val platformName: String, private val fileName: String) : Plugin<Project> {
abstract class PlatformPlugin<T : PluginDescription>(private val platformName: String, private val fileName: String) :
Plugin<Project> {

protected abstract fun createExtension(project: Project): T

Expand All @@ -59,6 +61,10 @@ abstract class PlatformPlugin<T : PluginDescription>(private val platformName: S
fileName.set(this@PlatformPlugin.fileName)
librariesJsonFileName.set("$prefix-libraries.json")
librariesRootComponent.set(libraries.incoming.resolutionResult.root)
repos.set(
project.repositories.withType(MavenArtifactRepository::class.java)
.associate { Pair(it.name, it.url.toString()) }
)
outputDirectory.set(generatedResourcesDirectory)
pluginDescription.set(provider {
setDefaults(project, description)
Expand Down

0 comments on commit fdfdda7

Please sign in to comment.