Skip to content

Commit 89cc5b7

Browse files
committed
Merge branch '2020.2' into 2020.3
2 parents f9aec04 + 027a074 commit 89cc5b7

File tree

66 files changed

+814
-304
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+814
-304
lines changed

build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ plugins {
1919
mcdev
2020
groovy
2121
idea
22-
id("org.jetbrains.intellij") version "1.0"
22+
id("org.jetbrains.intellij") version "1.1.3"
2323
id("org.cadixdev.licenser") version "0.6.1"
2424
id("org.jlleitschuh.gradle.ktlint") version "10.0.0"
2525
}
@@ -60,7 +60,7 @@ repositories {
6060
mavenCentral()
6161
maven("https://repo.denwav.dev/repository/maven-public/")
6262
maven("https://repo.spongepowered.org/maven")
63-
maven("https://jetbrains.bintray.com/intellij-third-party-dependencies")
63+
maven("https://cache-redirector.jetbrains.com/intellij-dependencies")
6464
maven("https://repo.gradle.org/gradle/libs-releases-local/")
6565
maven("https://maven.extracraftx.com")
6666
}
@@ -200,7 +200,7 @@ tasks.test {
200200

201201
idea {
202202
module {
203-
generatedSourceDirs.add(file("gen"))
203+
generatedSourceDirs.add(file("build/gen"))
204204
excludeDirs.add(file(intellij.sandboxDir.get()))
205205
}
206206
}
@@ -278,7 +278,7 @@ val generateTranslationTemplateLexer by lexer("TranslationTemplateLexer", "com/d
278278
val generate by tasks.registering {
279279
group = "minecraft"
280280
description = "Generates sources needed to compile the plugin."
281-
outputs.dir("gen")
281+
outputs.dir(layout.buildDirectory.dir("gen"))
282282
dependsOn(
283283
generateAtLexer,
284284
generateAtParser,

buildSrc/src/main/kotlin/util.kt

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,21 @@ import org.gradle.kotlin.dsl.provideDelegate
1717
import org.gradle.kotlin.dsl.registering
1818

1919
fun Project.lexer(flex: String, pack: String) = tasks.registering(JavaExec::class) {
20-
val src = "src/main/grammars/$flex.flex"
21-
val dst = "gen/$pack"
22-
val output = "$dst/$flex.java"
20+
val src = layout.projectDirectory.file("src/main/grammars/$flex.flex")
21+
val dst = layout.buildDirectory.dir("gen/$pack")
22+
val output = layout.buildDirectory.file("gen/$pack/$flex.java")
2323

2424
val jflex by project.configurations
2525
val jflexSkeleton by project.configurations
2626

2727
classpath = jflex
28-
main = "jflex.Main"
28+
mainClass.set("jflex.Main")
2929

3030
doFirst {
3131
args(
3232
"--skel", jflexSkeleton.singleFile.absolutePath,
33-
"-d", dst,
34-
src
33+
"-d", dst.get().asFile.absolutePath,
34+
src.asFile.absolutePath
3535
)
3636

3737
// Delete current lexer
@@ -43,11 +43,11 @@ fun Project.lexer(flex: String, pack: String) = tasks.registering(JavaExec::clas
4343
}
4444

4545
fun Project.parser(bnf: String, pack: String) = tasks.registering(JavaExec::class) {
46-
val src = "src/main/grammars/$bnf.bnf".replace('/', File.separatorChar)
47-
val dstRoot = "gen"
48-
val dst = "$dstRoot/$pack".replace('/', File.separatorChar)
49-
val psiDir = "$dst/psi/".replace('/', File.separatorChar)
50-
val parserDir = "$dst/parser/".replace('/', File.separatorChar)
46+
val src = project.layout.projectDirectory.file("src/main/grammars/$bnf.bnf")
47+
val dstRoot = project.layout.buildDirectory.dir("gen")
48+
val dst = dstRoot.map { it.dir(pack) }
49+
val psiDir = dst.map { it.dir("psi") }
50+
val parserDir = dst.map { it.dir("parser") }
5151

5252
val grammarKit by project.configurations
5353

@@ -56,7 +56,7 @@ fun Project.parser(bnf: String, pack: String) = tasks.registering(JavaExec::clas
5656
}
5757

5858
classpath = grammarKit
59-
main = "org.intellij.grammar.Main"
59+
mainClass.set("org.intellij.grammar.Main")
6060

6161
if (JavaVersion.current().isJava9Compatible) {
6262
jvmArgs(
@@ -66,7 +66,9 @@ fun Project.parser(bnf: String, pack: String) = tasks.registering(JavaExec::clas
6666
)
6767
}
6868

69-
args(dstRoot, src)
69+
doFirst {
70+
args(dstRoot.get().asFile, src.asFile)
71+
}
7072

7173
inputs.file(src)
7274
outputs.dirs(

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ junit = "5.7.1"
66
coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
77
coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "coroutines" }
88

9-
templateMakerFabric = "com.extracraftx.minecraft:TemplateMakerFabric:0.3.0"
9+
templateMakerFabric = "com.extracraftx.minecraft:TemplateMakerFabric:0.4.0"
1010

1111
# GrammarKit
1212
jflex-lib = "org.jetbrains.idea:jflex:1.7.0-b7f882a"

src/gradle-tooling-extension/groovy/com/demonwav/mcdev/platform/mcp/gradle/tooling/McpModelFG3BuilderImpl.groovy

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
package com.demonwav.mcdev.platform.mcp.gradle.tooling
1212

1313
import org.gradle.api.Project
14+
import org.gradle.api.file.FileCollection
15+
import org.gradle.api.provider.Provider
1416
import org.jetbrains.annotations.NotNull
1517
import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder
1618
import org.jetbrains.plugins.gradle.tooling.ModelBuilderService
@@ -46,8 +48,20 @@ final class McpModelFG3BuilderImpl implements ModelBuilderService {
4648
}
4749

4850
def taskOutput = task.outputs.files.singleFile
51+
52+
// Cheap way to be compatible with FG5
53+
def mappings = extension.mappings
54+
if (mappings instanceof Provider) {
55+
mappings = mappings.get()
56+
}
57+
58+
def accessTransformers = extension.accessTransformers
59+
if (accessTransformers instanceof FileCollection) {
60+
accessTransformers = accessTransformers.asList()
61+
}
62+
4963
//noinspection GroovyAssignabilityCheck
50-
return new McpModelFG3Impl(minecraftDepVersions, extension.mappings, taskOutput, task.name, extension.accessTransformers)
64+
return new McpModelFG3Impl(minecraftDepVersions, mappings, taskOutput, task.name, accessTransformers)
5165
}
5266

5367
@Override
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Minecraft Dev for IntelliJ
3+
*
4+
* https://minecraftdev.org
5+
*
6+
* Copyright (c) 2021 minecraft-dev
7+
*
8+
* MIT License
9+
*/
10+
11+
package com.demonwav.mcdev.platform.mcp.gradle.tooling.vanillagradle
12+
13+
import org.gradle.api.Project
14+
import org.jetbrains.annotations.NotNull
15+
import org.jetbrains.plugins.gradle.tooling.ErrorMessageBuilder
16+
import org.jetbrains.plugins.gradle.tooling.ModelBuilderService
17+
18+
class VanillaGradleModelBuilderImpl implements ModelBuilderService {
19+
20+
@Override
21+
boolean canBuild(String modelName) {
22+
return VanillaGradleModel.name == modelName
23+
}
24+
25+
@Override
26+
Object buildAll(String modelName, Project project) {
27+
return new VanillaGradleModelImpl(project.plugins.hasPlugin('org.spongepowered.gradle.vanilla'))
28+
}
29+
30+
@Override
31+
ErrorMessageBuilder getErrorMessageBuilder(@NotNull Project project, @NotNull Exception e) {
32+
return ErrorMessageBuilder.create(
33+
project, e, "MinecraftDev import errors"
34+
).withDescription("Unable to build MinecraftDev VanillaGradle project configuration")
35+
}
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Minecraft Dev for IntelliJ
3+
*
4+
* https://minecraftdev.org
5+
*
6+
* Copyright (c) 2021 minecraft-dev
7+
*
8+
* MIT License
9+
*/
10+
11+
package com.demonwav.mcdev.platform.mcp.gradle.tooling.vanillagradle
12+
13+
class VanillaGradleModelImpl implements VanillaGradleModel, Serializable {
14+
15+
private final boolean hasVanillaGradle
16+
17+
VanillaGradleModelImpl(boolean hasVanillaGradle) {
18+
this.hasVanillaGradle = hasVanillaGradle
19+
}
20+
21+
@Override
22+
boolean hasVanillaGradle() {
23+
return hasVanillaGradle
24+
}
25+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*
2+
* Minecraft Dev for IntelliJ
3+
*
4+
* https://minecraftdev.org
5+
*
6+
* Copyright (c) 2021 minecraft-dev
7+
*
8+
* MIT License
9+
*/
10+
11+
package com.demonwav.mcdev.platform.mcp.gradle.tooling.vanillagradle;
12+
13+
public interface VanillaGradleModel {
14+
15+
boolean hasVanillaGradle();
16+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
com.demonwav.mcdev.platform.mcp.gradle.tooling.vanillagradle.VanillaGradleModelBuilderImpl
12
com.demonwav.mcdev.platform.mcp.gradle.tooling.McpModelFG2BuilderImpl
23
com.demonwav.mcdev.platform.mcp.gradle.tooling.McpModelFG3BuilderImpl

src/main/kotlin/creator/CreatorStep.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,23 +94,25 @@ class BasicJavaClassStep(
9494
private val project: Project,
9595
private val buildSystem: BuildSystem,
9696
private val className: String,
97-
private val classText: String
97+
private val classText: String,
98+
private val openInEditor: Boolean = true,
99+
private val rootProvider: (BuildSystem) -> Path = { it.dirsOrError.sourceDirectory }
98100
) : CreatorStep {
99101
override fun runStep(indicator: ProgressIndicator) {
100-
val dirs = buildSystem.dirsOrError
101-
102102
runWriteTask {
103103
indicator.text = "Writing class: $className"
104104
val files = className.split(".")
105105
val className = files.last()
106106

107-
val sourceDir = getMainClassDirectory(dirs.sourceDirectory, files)
107+
val sourceDir = getMainClassDirectory(rootProvider(buildSystem), files)
108108

109109
val classFile = CreatorStep.writeTextToFile(project, sourceDir, "$className.java", classText)
110110

111-
// Set the editor focus on the created class
112-
PsiManager.getInstance(project).findFile(classFile)?.let { classPsi ->
113-
EditorHelper.openInEditor(classPsi)
111+
if (openInEditor) {
112+
// Set the editor focus on the created class
113+
PsiManager.getInstance(project).findFile(classFile)?.let { classPsi ->
114+
EditorHelper.openInEditor(classPsi)
115+
}
114116
}
115117
}
116118
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* Minecraft Dev for IntelliJ
3+
*
4+
* https://minecraftdev.org
5+
*
6+
* Copyright (c) 2021 minecraft-dev
7+
*
8+
* MIT License
9+
*/
10+
11+
package com.demonwav.mcdev.creator
12+
13+
import com.demonwav.mcdev.platform.CommonTemplate
14+
import com.demonwav.mcdev.util.License
15+
import com.intellij.openapi.progress.ProgressIndicator
16+
import com.intellij.openapi.project.Project
17+
import java.nio.file.Files
18+
import java.nio.file.Path
19+
import java.nio.file.StandardOpenOption
20+
21+
class LicenseStep(
22+
private val project: Project,
23+
private val rootDirectory: Path,
24+
private val license: License,
25+
private val author: String
26+
) : CreatorStep {
27+
28+
override fun runStep(indicator: ProgressIndicator) {
29+
val licenseFile = rootDirectory.resolve("LICENSE")
30+
31+
val fileText = CommonTemplate.applyLicenseTemplate(project, license, author)
32+
33+
Files.write(
34+
licenseFile,
35+
fileText.toByteArray(Charsets.UTF_8),
36+
StandardOpenOption.CREATE,
37+
StandardOpenOption.WRITE,
38+
StandardOpenOption.TRUNCATE_EXISTING
39+
)
40+
}
41+
}

0 commit comments

Comments
 (0)