version = '0.42.1' base.archivesName = 'saltatory' repositories { ivy { url = 'https://github.com/Pocky-l/dhturbo/releases/download' patternLayout { artifact 'v[revision]/[artifact]-[revision].[ext]' } metadataSources { artifact() } content { includeModule 'com.pockyl', 'dhturbo-neoforge-1.21.1' } } ivy { url = 'https://github.com/tlaplus/tlaplus/releases/download' patternLayout { artifact '[revision]/[artifact].[ext]' } metadataSources { artifact() } content { includeModule 'org.lamport', 'tla2tools' } } maven { url = 'https://maven.blamejared.com/' content { includeGroup 'com.hrznstudio' } } maven { url = 'https://modmaven.dev/' content { includeGroup 'mekanism' } } maven { url = 'https://www.cursemaven.com' content { includeGroup 'curse.maven' } } maven { url = 'https://api.modrinth.com/maven' content { includeGroup 'maven.modrinth' } } } sourceSets { probe { compileClasspath += sourceSets.main.output + configurations.compileClasspath } } configurations { c2me } def dfcJar = providers.provider { zipTree(configurations.c2me.singleFile).matching { include 'META-INF/jars/*-opts-dfc-*.jar' }.files } dependencies { c2me('curse.maven:c2me-533097:9344813') { transitive = false } compileOnly files(dfcJar) testImplementation files(dfcJar) compileOnly('mekanism:Mekanism:1.21.1-10.7.19.85') { transitive = false } compileOnly('curse.maven:functional-storage-556861:8459097') { transitive = false } compileOnly('maven.modrinth:refined-storage:lHHiI26k') { transitive = false } compileOnly('maven.modrinth:distanthorizons:9w34y8ai') { transitive = false } compileOnly('maven.modrinth:chunky:LuFhm4eU') { transitive = false } compileOnly('com.pockyl:dhturbo-neoforge-1.21.1:1.5.0') { transitive = false } compileOnly 'org.jetbrains:annotations:24.1.0' compileOnly 'org.apiguardian:apiguardian-api:1.1.2' compileOnly 'io.github.llamalad7:mixinextras-neoforge:0.5.3' probeCompileOnly('com.hrznstudio:titanium:1.21-4.0.43') { transitive = false } testImplementation 'it.unimi.dsi:fastutil:8.5.12' testImplementation('org.lamport:tla2tools:v1.7.4') { transitive = false } } tasks.named('quality') { dependsOn 'checkstyleProbe' } tasks.named('checkstyleProbe') { dependsOn 'compileProbeJava' classpath = sourceSets.probe.compileClasspath } tasks.named('test') { inputs.dir('src/test/tla') } tasks.named('processProbeResources') { inputs.property 'version', provider { project.version.toString() } filesMatching('META-INF/neoforge.mods.toml') { expand version: project.version.toString() } dependsOn 'test' ['Slots', 'SlotOverflow', 'Traits'].each { name -> from(layout.buildDirectory.dir("reports/models/${name}")) { include 'cases.jsonl', 'stats.json' eachFile { entry -> entry.path = "cases/${name}." + (entry.name == 'cases.jsonl' ? 'jsonl' : 'json') } } } from({ zipTree(configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts.find { it.moduleVersion.id.group == 'mekanism' && it.name == 'Mekanism' }.file) }) { include 'mekanism/common/content/transporter/TransporterManager*.class' into 'baseline' } } tasks.register('probeJar', Jar) { dependsOn 'quality', 'probeClasses' archiveBaseName = 'saltatory-checks' destinationDirectory = layout.buildDirectory.dir('probe') from sourceSets.probe.output }