Skip to content

Commit e2fa13f

Browse files
committed
feat: Avoid project usage in tasks
1 parent b70eeaf commit e2fa13f

File tree

6 files changed

+60
-64
lines changed

6 files changed

+60
-64
lines changed

src/main/kotlin/meta/task/MergePluginMeta.kt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import com.charleskorn.kaml.Yaml
44
import kotlinx.serialization.encodeToString
55
import meta.PluginMetaYaml
66
import org.gradle.api.DefaultTask
7+
import org.gradle.api.file.ProjectLayout
78
import org.gradle.api.file.RegularFileProperty
8-
import org.gradle.api.model.ObjectFactory
99
import org.gradle.api.provider.Property
10+
import org.gradle.api.provider.ProviderFactory
1011
import org.gradle.api.tasks.*
11-
import org.gradle.kotlin.dsl.property
1212
import ru.endlesscode.bukkitgradle.TASKS_GROUP_BUKKIT
1313
import ru.endlesscode.bukkitgradle.meta.PluginMetaPlugin
1414
import ru.endlesscode.bukkitgradle.meta.extension.PluginMeta
@@ -20,9 +20,10 @@ import javax.inject.Inject
2020
*
2121
* @see ru.endlesscode.bukkitgradle.meta.PluginMetaPlugin
2222
*/
23-
public open class MergePluginMeta @Inject internal constructor(
24-
objects: ObjectFactory
25-
) : DefaultTask() {
23+
public abstract class MergePluginMeta @Inject internal constructor(
24+
projectLayout: ProjectLayout,
25+
providers: ProviderFactory
26+
): DefaultTask() {
2627

2728
@get:Internal
2829
internal lateinit var yaml: Yaml
@@ -31,17 +32,17 @@ public open class MergePluginMeta @Inject internal constructor(
3132
internal lateinit var meta: PluginMeta
3233

3334
@get:Input
34-
internal val metaYaml: Property<PluginMetaYaml> = objects.property()
35+
internal abstract val metaYaml: Property<PluginMetaYaml>
3536

36-
@OutputFile
37-
public val target: RegularFileProperty = objects.fileProperty()
37+
@get:OutputFile
38+
public abstract val target: RegularFileProperty
3839

3940
init {
4041
group = TASKS_GROUP_BUKKIT
4142
description = "Generate plugin.yml file"
4243

43-
val defaultTargetProvider = project.provider { File(temporaryDir, PluginMetaPlugin.FILE_NAME) }
44-
target.convention(project.layout.file(defaultTargetProvider))
44+
val defaultTargetProvider = providers.provider { File(temporaryDir, PluginMetaPlugin.FILE_NAME) }
45+
target.convention(projectLayout.file(defaultTargetProvider))
4546
}
4647

4748
/** Writes meta to target file */

src/main/kotlin/meta/task/ParsePluginMetaFile.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import kotlinx.serialization.decodeFromString
55
import meta.PluginMetaYaml
66
import org.gradle.api.DefaultTask
77
import org.gradle.api.file.RegularFileProperty
8-
import org.gradle.api.model.ObjectFactory
98
import org.gradle.api.provider.Provider
9+
import org.gradle.api.provider.ProviderFactory
1010
import org.gradle.api.tasks.InputFile
1111
import org.gradle.api.tasks.Internal
1212
import org.gradle.api.tasks.Optional
@@ -15,22 +15,22 @@ import ru.endlesscode.bukkitgradle.TASKS_GROUP_BUKKIT
1515
import ru.endlesscode.bukkitgradle.meta.extension.PluginMetaImpl
1616
import javax.inject.Inject
1717

18-
internal open class ParsePluginMetaFile @Inject constructor(
19-
objects: ObjectFactory
18+
internal abstract class ParsePluginMetaFile @Inject constructor(
19+
providers: ProviderFactory
2020
) : DefaultTask() {
2121

22-
@Internal
22+
@get:Internal
2323
lateinit var yaml: Yaml
2424

25-
@Internal
25+
@get:Internal
2626
lateinit var meta: PluginMetaImpl
2727

28-
@Optional
29-
@InputFile
30-
val metaFile: RegularFileProperty = objects.fileProperty()
28+
@get:Optional
29+
@get:InputFile
30+
abstract val metaFile: RegularFileProperty
3131

32-
@Internal
33-
val pluginMetaYaml: Provider<PluginMetaYaml> = project.provider { checkNotNull(metaYaml) }
32+
@get:Internal
33+
val pluginMetaYaml: Provider<PluginMetaYaml> = providers.provider { checkNotNull(metaYaml) }
3434

3535
private var metaYaml: PluginMetaYaml? = null
3636

src/main/kotlin/server/task/BuildServerCore.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
11
package ru.endlesscode.bukkitgradle.server.task
22

3-
import org.gradle.api.model.ObjectFactory
43
import org.gradle.api.provider.Property
54
import org.gradle.api.provider.Provider
65
import org.gradle.api.tasks.Input
76
import org.gradle.api.tasks.InputFile
87
import org.gradle.api.tasks.JavaExec
98
import org.gradle.api.tasks.OutputFile
10-
import org.gradle.kotlin.dsl.property
119
import org.gradle.process.CommandLineArgumentProvider
1210
import ru.endlesscode.bukkitgradle.TASKS_GROUP_BUKKIT
1311
import java.io.File
14-
import javax.inject.Inject
1512

16-
public open class BuildServerCore @Inject constructor(objects: ObjectFactory) : JavaExec() {
13+
@Suppress("LeakingThis")
14+
public abstract class BuildServerCore : JavaExec() {
1715

18-
@InputFile
19-
public val buildToolsFile: Property<File> = objects.property()
16+
@get:InputFile
17+
public abstract val buildToolsFile: Property<File>
2018

21-
@Input
22-
public val version: Property<String> = objects.property()
19+
@get:Input
20+
public abstract val version: Property<String>
2321

2422
@OutputFile
2523
public val spigotFile: Provider<File> = buildToolsFile.zip(version) { buildToolsFile, version ->

src/main/kotlin/server/task/CreateIdeaJarRunConfiguration.kt

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,35 +11,34 @@ import org.gradle.api.tasks.Input
1111
import org.gradle.api.tasks.Internal
1212
import org.gradle.api.tasks.OutputFile
1313
import org.gradle.api.tasks.TaskAction
14-
import org.gradle.kotlin.dsl.listProperty
15-
import org.gradle.kotlin.dsl.property
1614
import org.gradle.kotlin.dsl.withGroovyBuilder
1715
import ru.endlesscode.bukkitgradle.TASKS_GROUP_BUKKIT
1816
import ru.endlesscode.bukkitgradle.server.util.Idea
1917
import java.io.File
2018

2119
/** Builds and writes to file run configuration in IDEA .xml format. */
22-
public open class CreateIdeaJarRunConfiguration : DefaultTask() {
20+
@Suppress("LeakingThis")
21+
public abstract class CreateIdeaJarRunConfiguration : DefaultTask() {
2322

24-
@Input
25-
public val configurationName: Property<String> = project.objects.property()
23+
@get:Input
24+
public abstract val configurationName: Property<String>
2625

27-
@Input
28-
public val vmParameters: ListProperty<String> = project.objects.listProperty()
26+
@get:Input
27+
public abstract val vmParameters: ListProperty<String>
2928

30-
@Input
31-
public val programParameters: ListProperty<String> = project.objects.listProperty()
29+
@get:Input
30+
public abstract val programParameters: ListProperty<String>
3231

33-
@Input
34-
public val beforeRunTask: Property<String> = project.objects.property()
32+
@get:Input
33+
public abstract val beforeRunTask: Property<String>
3534

36-
@Input
37-
public val jarPath: Property<File> = project.objects.property()
35+
@get:Input
36+
public abstract val jarPath: Property<File>
3837

39-
@Internal
40-
public val configurationsDir: DirectoryProperty = project.objects.directoryProperty()
38+
@get:Internal
39+
public abstract val configurationsDir: DirectoryProperty
4140

42-
@OutputFile
41+
@get:OutputFile
4342
public val configurationFile: Provider<RegularFile> = configurationsDir.zip(configurationName) { dir, name ->
4443
dir.file("${Idea.fileNameSlug(name)}.xml")
4544
}

src/main/kotlin/server/task/DownloadPaperclip.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,28 @@ import de.undercouch.gradle.tasks.download.Download
44
import kotlinx.serialization.Serializable
55
import kotlinx.serialization.decodeFromString
66
import kotlinx.serialization.json.Json
7-
import org.gradle.api.model.ObjectFactory
87
import org.gradle.api.provider.Property
98
import org.gradle.api.provider.Provider
9+
import org.gradle.api.provider.ProviderFactory
1010
import org.gradle.api.tasks.Input
1111
import org.gradle.api.tasks.InputFile
1212
import org.gradle.api.tasks.OutputFile
1313
import org.gradle.api.tasks.StopExecutionException
14-
import org.gradle.kotlin.dsl.property
1514
import ru.endlesscode.bukkitgradle.TASKS_GROUP_BUKKIT
1615
import java.io.File
1716
import javax.inject.Inject
1817

19-
public open class DownloadPaperclip @Inject constructor(objects: ObjectFactory) : Download() {
18+
@Suppress("LeakingThis")
19+
public abstract class DownloadPaperclip @Inject constructor(providers: ProviderFactory) : Download() {
2020

21-
@InputFile
22-
public val paperVersionsFile: Property<File> = objects.property()
21+
@get:InputFile
22+
public abstract val paperVersionsFile: Property<File>
2323

24-
@Input
25-
public val version: Property<String> = objects.property()
24+
@get:Input
25+
public abstract val version: Property<String>
2626

27-
@OutputFile
28-
public val paperclipFile: Provider<File> = project.provider { outputFiles.single() }
27+
@get:OutputFile
28+
public val paperclipFile: Provider<File> = providers.provider { outputFiles.single() }
2929

3030
init {
3131
group = TASKS_GROUP_BUKKIT
@@ -37,14 +37,14 @@ public open class DownloadPaperclip @Inject constructor(objects: ObjectFactory)
3737

3838
private fun extractPaperUrl(versionsFile: File, version: String): String {
3939
if (!versionsFile.isFile) {
40-
project.logger.warn("Paper versions file not downloaded, make sure that Gradle isn\'t running in offline mode.")
40+
logger.warn("Paper versions file not downloaded, make sure that Gradle isn\'t running in offline mode.")
4141
throw StopExecutionException()
4242
}
4343

4444
val versionsUrls = Json.decodeFromString<PaperVersions>(versionsFile.readText()).versions
4545
val paperUrl = versionsUrls[version]
4646
if (paperUrl == null) {
47-
project.logger.warn(
47+
logger.warn(
4848
"""
4949
Paper v$version not found.
5050
Supported paper versions: ${versionsUrls.keys}.

src/main/kotlin/server/task/PrepareServer.kt

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,29 @@ package ru.endlesscode.bukkitgradle.server.task
33
import org.gradle.api.DefaultTask
44
import org.gradle.api.file.DirectoryProperty
55
import org.gradle.api.file.RegularFile
6-
import org.gradle.api.model.ObjectFactory
76
import org.gradle.api.provider.Provider
87
import org.gradle.api.tasks.Input
98
import org.gradle.api.tasks.Internal
109
import org.gradle.api.tasks.OutputFile
1110
import org.gradle.api.tasks.TaskAction
1211
import ru.endlesscode.bukkitgradle.TASKS_GROUP_BUKKIT
1312
import java.util.*
14-
import javax.inject.Inject
1513

16-
internal open class PrepareServer @Inject constructor(objects: ObjectFactory) : DefaultTask() {
14+
internal abstract class PrepareServer : DefaultTask() {
1715

18-
@Internal
19-
val serverDir: DirectoryProperty = objects.directoryProperty()
16+
@get:Internal
17+
abstract val serverDir: DirectoryProperty
2018

21-
@Input
19+
@get:Input
2220
var eula: Boolean = false
2321

24-
@Input
22+
@get:Input
2523
var onlineMode: Boolean = true
2624

27-
@OutputFile
25+
@get:OutputFile
2826
val eulaFile: Provider<RegularFile> = serverDir.map { it.file("eula.txt") }
2927

30-
@OutputFile
28+
@get:OutputFile
3129
val propertiesFile: Provider<RegularFile> = serverDir.map { it.file("server.properties") }
3230

3331
init {

0 commit comments

Comments
 (0)