Advanced-Portals/spigot/build.gradle
Sekwah 9030ff5363 feat: re-implement and clean up permissions (#453)
BREAKING CHANGE: Permissions have been reworked, if you use a permissions manager you may need to change a few of the permissions
2024-11-18 05:32:21 +00:00

112 lines
3.7 KiB
Groovy

// Check the root build.gradle under allprojects for common settings
configurations {
// configuration that holds jars to copy into lib
includeLibs
}
repositories {
maven { url "https://repo.maven.apache.org/maven2" }
maven { url "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" }
maven { url 'https://papermc.io/repo/repository/maven-public/' }
}
// includeLibs just says to include the library in the final jar
dependencies {
implementation project(":core")
// For spigot api
// We are using an older version to try and ensure that we are not using anything new older versions cant use.
implementation "org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT"
implementation "net.md-5:bungeecord-api:1.16-R0.4"
implementation "com.mojang:authlib:3.5.41"
implementation "com.google.inject:guice:5.0.1"
// Be careful to only use what you need to from paper, otherwise it will become incompatible with spigot.
// compileOnly 'com.destroystokyo.paper:paper-api:1.16.5-R0.1-SNAPSHOT'
}
jar {
from configurations.includeLibs.collect {
it.isDirectory() ? it : zipTree(it)
}
}
// Code for generating extra data in plugins.yml
// This may be able to be simplified drastically, though the goal is to get this working for now
// as it has gone through a few iterations.
sourceSets {
permissionsGen {
java {
srcDirs = ['src/main/java']
}
}
}
configurations {
permissionsGenCompileClasspath.extendsFrom compileClasspath
}
def compilePermissionsGen = tasks.register('compilePermissionsGen', JavaCompile) {
source = sourceSets.permissionsGen.allJava
classpath = configurations.permissionsGenCompileClasspath
destinationDirectory = file("$buildDir/classes/permissionsGen")
}
def templateSource = file('src/main/templates')
def templateDest = layout.buildDirectory.dir('generated/resources/templates')
def generatePermissionsYaml = tasks.register('generatePermissionsYaml') {
dependsOn compilePermissionsGen
doLast {
println "Generating permissions.yml file"
def classFiles = []
classFiles.addAll(files("$buildDir/classes/permissionsGen", sourceSets.permissionsGen.runtimeClasspath)
.collect { it.toURI().toURL() })
classFiles.addAll(project(':core').sourceSets.main.output.classesDirs
.collect { it.toURI().toURL() })
def urls = classFiles.toArray(new URL[0])
def parentClassLoader = Thread.currentThread().contextClassLoader
def classLoader = new URLClassLoader(urls, parentClassLoader)
def permissionsGeneratorClass = classLoader.loadClass('com.sekwah.advancedportals.spigot.PermissionsGeneratorSpigot')
def getPermissionsMethod = permissionsGeneratorClass.getMethod('getPermissions')
def permissionsYaml = getPermissionsMethod.invoke(null)
def permissionsFile = file("$buildDir/generated/resources/permissions.yml")
permissionsFile.parentFile.mkdirs()
permissionsFile.text = permissionsYaml
println "Permissions YAML generated at: $permissionsFile"
}
}
def generateTemplates = tasks.register('generateTemplates', Copy) { task ->
dependsOn generatePermissionsYaml
def props = [
'permissions': { -> file("$buildDir/generated/resources/permissions.yml").text },
'pluginVersion': { -> project.version }
]
task.inputs.properties(props)
task.from(templateSource)
task.into(templateDest)
task.expand(props)
doFirst {
println "Running generateTemplates task"
}
}
generateTemplates.configure {
outputs.upToDateWhen { false }
}
sourceSets.main.resources.srcDir(generateTemplates.map { it.outputs })