add included mod ids to manifest
This commit is contained in:
parent
4094397909
commit
056350e1dd
|
@ -21,10 +21,12 @@ import org.jetbrains.java.decompiler.main.decompiler.SingleFileSaver
|
|||
import org.jetbrains.java.decompiler.main.extern.IFernflowerPreferences
|
||||
import java.io.PrintStream
|
||||
import java.net.URI
|
||||
import java.nio.charset.StandardCharsets
|
||||
import java.nio.file.FileSystems
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.StandardCopyOption
|
||||
import kotlin.io.path.appendText
|
||||
import kotlin.io.path.createDirectories
|
||||
import kotlin.io.path.deleteExisting
|
||||
import kotlin.io.path.exists
|
||||
|
@ -129,18 +131,20 @@ class NonsenseGradlePlugin : Plugin<Project> {
|
|||
it.isCanBeConsumed = false
|
||||
}
|
||||
|
||||
project.tasks.getByName("jar").actions.addLast { task ->
|
||||
task.outputs.files.forEach {file ->
|
||||
project.tasks.getByName("jar") { task ->
|
||||
task.outputs.upToDateWhen { false }
|
||||
task.actions.addLast { _ ->
|
||||
task.outputs.files.forEach { file ->
|
||||
val output = file.toPath().parent.resolveSibling("frog")
|
||||
output.createDirectories()
|
||||
if (file.name.endsWith(".jar") && !(file.name.contains("-dev.") || file.name.contains("-sources."))){
|
||||
val outFile = output.resolve(file.name.substring(0, file.name.length-4)+".frogmod")
|
||||
if (file.name.endsWith(".jar") && !(file.name.contains("-dev.") || file.name.contains("-sources."))) {
|
||||
val outFile = output.resolve(file.name.substring(0, file.name.length - 4) + ".frogmod")
|
||||
Files.copy(file.toPath(), outFile, StandardCopyOption.REPLACE_EXISTING)
|
||||
FileSystems.newFileSystem(outFile).use { fs ->
|
||||
if (includeConfiguration.isPresent) {
|
||||
FileSystems.newFileSystem(outFile).use {fs ->
|
||||
val jijPath = fs.getPath("META-INF/jars")
|
||||
jijPath.createDirectories()
|
||||
val files = Nester.run(includeConfiguration.get(), jijPath).map { it.toString() }.toList()
|
||||
val files =
|
||||
listOf(Nester.run(includeConfiguration.get(), jijPath).map { it.toml() }.toList())
|
||||
if (files.isNotEmpty()) {
|
||||
val manifest = fs.getPath("frog.mod.toml")
|
||||
val config: CommentedConfig =
|
||||
|
@ -151,12 +155,20 @@ class NonsenseGradlePlugin : Plugin<Project> {
|
|||
TomlWriter().write(config, manifest, WritingMode.REPLACE)
|
||||
}
|
||||
}
|
||||
fs.getPath("META-INF/MANIFEST.MF").appendText(
|
||||
"""
|
||||
Built-By: Phytotelma ${this.javaClass.`package`.implementationVersion}
|
||||
Target-Namespace: Mojmap
|
||||
Built-For: Minecraft $minecraftVersion
|
||||
""".trimIndent(), StandardCharsets.UTF_8
|
||||
)
|
||||
}
|
||||
println("Built mod to ${outFile.toUri()}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
lateinit var nonsenseCacheDir: Path
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package org.ecorous.esnesnon.gradle.nest
|
||||
|
||||
import com.electronwill.nightconfig.core.Config
|
||||
import com.electronwill.nightconfig.core.UnmodifiableConfig
|
||||
import com.google.common.jimfs.Jimfs
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.artifacts.ProjectDependency
|
||||
|
@ -13,8 +15,8 @@ import java.util.*
|
|||
import kotlin.io.path.*
|
||||
|
||||
object Nester {
|
||||
fun run(configuration: Configuration, path: Path): Collection<Path> {
|
||||
val files = mutableListOf<Path>()
|
||||
fun run(configuration: Configuration, path: Path): Collection<NestedJar> {
|
||||
val files = mutableListOf<NestedJar>()
|
||||
Jimfs.newFileSystem(com.google.common.jimfs.Configuration.unix()).use { memFs ->
|
||||
configuration.dependencies.filterIsInstance<ProjectDependency>().forEach { dependency ->
|
||||
val project = dependency.dependencyProject
|
||||
|
@ -31,9 +33,13 @@ object Nester {
|
|||
memFs
|
||||
)
|
||||
}.get()
|
||||
path.createDirectories()
|
||||
val target = path.resolve(location.fileName.toString())
|
||||
Files.copy(location, target)
|
||||
files.add(target.absolute())
|
||||
files.add(NestedJar(("${dependency.group}_${dependency.name}${if (task.archiveClassifier.isPresent) "_${task.archiveClassifier}" else ""}").replace(
|
||||
"\\.".toRegex(),
|
||||
"_"
|
||||
).lowercase(Locale.ROOT), target.absolute().toString()))
|
||||
}
|
||||
}
|
||||
configuration.resolvedConfiguration.firstLevelModuleDependencies.forEach { dep ->
|
||||
|
@ -46,9 +52,13 @@ object Nester {
|
|||
artifact.classifier,
|
||||
memFs
|
||||
)
|
||||
path.createDirectories()
|
||||
val target = path.resolve(location.fileName.toString())
|
||||
Files.copy(location, target)
|
||||
files.add(target.absolute())
|
||||
files.add(NestedJar(("${dep.moduleGroup}_${dep.moduleName}${if (artifact.classifier != null) "_${artifact.classifier}" else ""}").replace(
|
||||
"\\.".toRegex(),
|
||||
"_"
|
||||
).lowercase(Locale.ROOT), target.absolute().toString()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -111,3 +121,12 @@ object Nester {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
class NestedJar(val id: String, val path: String){
|
||||
fun toml(): UnmodifiableConfig {
|
||||
val config = Config.inMemory()
|
||||
config.add("id", id)
|
||||
config.add("path", path)
|
||||
return config
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue