diff --git a/build.gradle.kts b/build.gradle.kts index db77430..715ab0a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,14 +32,18 @@ repositories { mavenCentral() } -dependencies { - implementation(platform("org.apache.logging.log4j:log4j-bom:2.25.2")) - implementation("org.apache.logging.log4j:log4j-api") - runtimeOnly("org.apache.logging.log4j:log4j-core") - compileOnly("org.jetbrains:annotations:26.0.2-1") +val detag by configurations.creating { + isCanBeConsumed = false + isCanBeResolved = true +} - implementation("com.r35157.libs:valuetypes-basic-api:0.1-dev") - implementation("com.r35157.nenjim:valuetypes-api:0.1-dev") +dependencies { + detag("com.r35157.tools:detag-impl_ref:0.1-dev") + compileOnly("org.jetbrains:annotations:26.1.0") + runtimeOnly("org.apache.logging.log4j:log4j-core:2.26.0") + runtimeOnly("org.apache.logging.log4j:log4j-slf4j2-impl:2.26.0") + + implementation("org.slf4j:slf4j-api:2.0.18") implementation("com.r35157.nenjim:hubd-api:0.1-dev") } @@ -49,6 +53,54 @@ java { tasks.withType().configureEach { options.release.set(25) + options.compilerArgs.addAll(listOf("-Xmaxerrs", "1")) +} + +val generatedDetagMain = layout.buildDirectory.dir("generated/sources/detag/main/java") + +val cleanGeneratedDetagMain by tasks.registering(Delete::class) { + delete(generatedDetagMain) +} + +val detagMain by tasks.registering(JavaExec::class) { + group = "build" + description = "Generates Java sources from .tjava files" + + classpath = detag + mainClass.set("com.r35157.tools.detag.impl.ref.Main") + + val configFile = layout.projectDirectory.file("../detag.conf") + val sourceRoot = layout.projectDirectory.dir("src/main/tjava") + + inputs.file(configFile) + inputs.dir(sourceRoot) + outputs.dir(generatedDetagMain) + + dependsOn(cleanGeneratedDetagMain) + + args( + "--config", configFile.asFile.absolutePath, + "--source-root", sourceRoot.asFile.absolutePath, + "--out", generatedDetagMain.get().asFile.absolutePath + ) +} + +sourceSets { + main { + // Human-written Detag source files. IntelliJ should treat this as a source root. + // Gradle's Java compiler will still only compile .java files directly from sourceSets, + // so the .tjava files are not compiled directly. + java.srcDir("src/main/tjava") + } +} + +tasks.named("compileJava") { + dependsOn(detagMain) + + // Compiler input generated from src/main/tjava. + // Do not add this directory to sourceSets, or IntelliJ will see duplicate classes: + // MyClass.tjava + build/generated/.../MyClass.java. + source(generatedDetagMain) } val libsDir = layout.buildDirectory.dir("libs") diff --git a/src/main/java/com/r35157/nenjim/hubd/impl/ref/ContextManagerImpl.java b/src/main/tjava/com/r35157/nenjim/hubd/impl/ref/ContextManagerImpl.tjava similarity index 79% rename from src/main/java/com/r35157/nenjim/hubd/impl/ref/ContextManagerImpl.java rename to src/main/tjava/com/r35157/nenjim/hubd/impl/ref/ContextManagerImpl.tjava index d833b14..5658e8a 100644 --- a/src/main/java/com/r35157/nenjim/hubd/impl/ref/ContextManagerImpl.java +++ b/src/main/tjava/com/r35157/nenjim/hubd/impl/ref/ContextManagerImpl.tjava @@ -2,7 +2,6 @@ package com.r35157.nenjim.hubd.impl.ref; import com.r35157.nenjim.hubd.ctx.Context; import com.r35157.nenjim.hubd.ctx.ContextManager; -import com.r35157.nenjim.valuetypes.ctx.ContextId; import java.util.Set; @@ -17,12 +16,12 @@ public class ContextManagerImpl implements ContextManager { } @Override - public Context get(ContextId contextId) { + public Context get(ΩContextIdΩ contextId) { return null; } @Override - public Set getList() { + public Set<ΩContextIdΩ> getList() { return Set.of(); }