diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 9292434d..5b621513 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -44,6 +44,8 @@ jobs: run: ./scripts/tagcleaner.sh - name: Build ModernFix using Gradle run: ./gradlew build + - name: Run mixin audit + run: timeout 60 xvfb-run ./gradlew runAuditClient - name: Publish mod to CurseForge & Modrinth if: steps.check_branch.outputs.is_release == 'true' run: ./gradlew publishMods copyJarToBin diff --git a/build.gradle.kts b/build.gradle.kts index da20c349..e6dc06a9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -38,6 +38,10 @@ legacyForge { create("server") { server() } + create("auditClient") { + client() + jvmArguments.addAll("-Dmodernfix.auditAndExit=true", "-Djava.awt.headless=true") + } } mods { diff --git a/src/main/java/org/embeddedt/modernfix/common/mixin/core/BootstrapMixin.java b/src/main/java/org/embeddedt/modernfix/common/mixin/core/BootstrapMixin.java index 1a108612..5009f274 100644 --- a/src/main/java/org/embeddedt/modernfix/common/mixin/core/BootstrapMixin.java +++ b/src/main/java/org/embeddedt/modernfix/common/mixin/core/BootstrapMixin.java @@ -8,6 +8,7 @@ import org.embeddedt.modernfix.forge.load.ModWorkManagerQueue; import org.embeddedt.modernfix.util.TimeFormatter; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.MixinEnvironment; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -27,6 +28,13 @@ public class BootstrapMixin { LOGGER.info("ModernFix reached bootstrap stage ({} after launch)", TimeFormatter.formatNanos(ManagementFactory.getRuntimeMXBean().getUptime() * 1000L * 1000L)); ModWorkManagerQueue.replace(); ManifestCompactor.compactManifests(); + boolean auditAndExit = Boolean.getBoolean("modernfix.auditAndExit"); + if (auditAndExit || Boolean.getBoolean("modernfix.auditMixinsAtStart")) { + MixinEnvironment.getCurrentEnvironment().audit(); + if (auditAndExit) { + System.exit(0); + } + } } }