Skip to content

Commit c8da540

Browse files
committed
feat(IdeaRun): Propagate arguments to IDEA run configuration
1 parent d886379 commit c8da540

File tree

6 files changed

+16
-15
lines changed

6 files changed

+16
-15
lines changed

src/main/kotlin/server/DevServerPlugin.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ public class DevServerPlugin : Plugin<Project> {
157157
tasks.register<CreateIdeaJarRunConfiguration>("buildIdeaRun") {
158158
configurationName.set("${project.name}: Run server")
159159
beforeRunTask.set("prepareServer")
160+
vmParameters.set(serverConfiguration.buildJvmArgs(debug = false))
161+
programParameters.set(serverConfiguration.bukkitArgs)
160162
configurationsDir.set(project.rootProject.layout.projectDirectory.dir(".idea/runConfigurations"))
161163
jarPath.set(serverDir.map { it.file(ServerConstants.FILE_CORE).asFile })
162164
}

src/main/kotlin/server/extension/ServerConfiguration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ public interface ServerConfiguration {
1212
public val coreType: CoreType
1313

1414
/** Returns arguments for JVM. */
15-
public fun buildJvmArgs(): List<String>
15+
public fun buildJvmArgs(debug: Boolean = this.debug): List<String>
1616
}

src/main/kotlin/server/extension/ServerConfigurationImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public class ServerConfigurationImpl : ServerConfiguration {
4848
bukkitArgs = bukkitArgs + args.toList()
4949
}
5050

51-
override fun buildJvmArgs(): List<String> {
51+
override fun buildJvmArgs(debug: Boolean): List<String> {
5252
return listOfNotNull(DEBUG_ARGS.takeIf { debug }, "-Dfile.encoding=$encoding") + javaArgs
5353
}
5454

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import groovy.xml.MarkupBuilder
44
import org.gradle.api.DefaultTask
55
import org.gradle.api.file.DirectoryProperty
66
import org.gradle.api.file.RegularFile
7+
import org.gradle.api.provider.ListProperty
78
import org.gradle.api.provider.Property
89
import org.gradle.api.provider.Provider
910
import org.gradle.api.tasks.Input
1011
import org.gradle.api.tasks.Internal
1112
import org.gradle.api.tasks.OutputFile
1213
import org.gradle.api.tasks.TaskAction
14+
import org.gradle.kotlin.dsl.listProperty
1315
import org.gradle.kotlin.dsl.property
1416
import org.gradle.kotlin.dsl.withGroovyBuilder
1517
import ru.endlesscode.bukkitgradle.TASKS_GROUP_BUKKIT
@@ -23,10 +25,10 @@ public open class CreateIdeaJarRunConfiguration : DefaultTask() {
2325
public val configurationName: Property<String> = project.objects.property()
2426

2527
@Input
26-
public val vmParameters: Property<String> = project.objects.property()
28+
public val vmParameters: ListProperty<String> = project.objects.listProperty()
2729

2830
@Input
29-
public val programParameters: Property<String> = project.objects.property()
31+
public val programParameters: ListProperty<String> = project.objects.listProperty()
3032

3133
@Input
3234
public val beforeRunTask: Property<String> = project.objects.property()
@@ -46,8 +48,8 @@ public open class CreateIdeaJarRunConfiguration : DefaultTask() {
4648
group = TASKS_GROUP_BUKKIT
4749
description = "Configure server run configuration for IDEA"
4850

49-
vmParameters.convention("")
50-
programParameters.convention("")
51+
vmParameters.convention(emptyList())
52+
programParameters.convention(emptyList())
5153

5254
onlyIf { Idea.isActive() }
5355
}
@@ -68,8 +70,8 @@ public open class CreateIdeaJarRunConfiguration : DefaultTask() {
6870
"singleton" to true
6971
) {
7072
"option"("name" to "JAR_PATH", "value" to jarPath.get())
71-
"option"("name" to "VM_PARAMETERS", "value" to vmParameters.get())
72-
"option"("name" to "PROGRAM_PARAMETERS", "value" to programParameters.get())
73+
"option"("name" to "VM_PARAMETERS", "value" to vmParameters.get().joinToString(" "))
74+
"option"("name" to "PROGRAM_PARAMETERS", "value" to programParameters.get().joinToString(" "))
7375
"option"("name" to "WORKING_DIRECTORY", "value" to jarPath.get().parentFile)
7476
"method"("v" to 2) {
7577
"option"(

src/test/groovy/ru/endlesscode/bukkitgradle/server/extension/ServerConfigurationSpec.groovy

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,15 @@ class ServerConfigurationSpec extends Specification {
1313

1414
void 'when build args - should return args with debug flags'() {
1515
when:
16-
def args = serverConfiguration.buildJvmArgs()
16+
def args = serverConfiguration.buildJvmArgs(true)
1717

1818
then:
1919
["-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", "-Dfile.encoding=UTF-8", "-Xmx1G"] == args
2020
}
2121

2222
void 'when build args - and debug disabled - should return args without debug flags'() {
23-
given:
24-
serverConfiguration.debug = false
25-
2623
when:
27-
def args = serverConfiguration.buildJvmArgs()
24+
def args = serverConfiguration.buildJvmArgs(false)
2825

2926
then:
3027
["-Dfile.encoding=UTF-8", "-Xmx1G"] == args

src/test/groovy/ru/endlesscode/bukkitgradle/server/task/CreateIdeaJarRunConfigurationSpec.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ class CreateIdeaJarRunConfigurationSpec extends PluginSpecification {
4242
<component name='ProjectRunConfigurationManager'>
4343
<configuration default='false' name='test-plugin: Run server' type='JarApplication' singleton='true'>
4444
<option name='JAR_PATH' value='${serverDir}/core.jar' />
45-
<option name='VM_PARAMETERS' value='' />
46-
<option name='PROGRAM_PARAMETERS' value='' />
45+
<option name='VM_PARAMETERS' value='-Dfile.encoding=UTF-8 -Xmx1G' />
46+
<option name='PROGRAM_PARAMETERS' value='nogui' />
4747
<option name='WORKING_DIRECTORY' value='${serverDir}' />
4848
<method v='2'>
4949
<option name='Gradle.BeforeRunTask' enabled='true' tasks='prepareServer' externalProjectPath='\$PROJECT_DIR\$' />

0 commit comments

Comments
 (0)