diff --git a/build.gradle b/build.gradle index 97132f48..ccd9fdde 100644 --- a/build.gradle +++ b/build.gradle @@ -818,11 +818,14 @@ subprojects { // This uses advzip: https://linux.die.net/man/1/advzip def optimizeZip = tasks.register('optimizeZip', Exec) { + dependsOn makeZip description = "Optimizes the NeoForm ZIP-file in-place" - commandLine "advzip", "--recompress", "-k", "-4", makeZip.flatMap(Zip::getArchiveFile) - if (optimize_zip) { - mustRunAfter makeZip - } + commandLine "advzip", "--recompress", "-k", "-4" + argumentProviders.add( + objects.newInstance(ZipPathArgumentProvider).tap { + file = makeZip.flatMap(AbstractArchiveTask::getArchiveFile) + } + ) } if (optimize_zip) { makeZip.configure { finalizedBy optimizeZip } diff --git a/buildSrc/src/main/groovy/net/minecraftforge/mcpconfig/tasks/PathArgumentProvider.groovy b/buildSrc/src/main/groovy/net/minecraftforge/mcpconfig/tasks/PathArgumentProvider.groovy new file mode 100644 index 00000000..57efc1ac --- /dev/null +++ b/buildSrc/src/main/groovy/net/minecraftforge/mcpconfig/tasks/PathArgumentProvider.groovy @@ -0,0 +1,18 @@ +package net.minecraftforge.mcpconfig.tasks + +import org.gradle.api.file.RegularFileProperty +import org.gradle.api.tasks.InputFile +import org.gradle.api.tasks.PathSensitive +import org.gradle.api.tasks.PathSensitivity +import org.gradle.process.CommandLineArgumentProvider + +abstract class ZipPathArgumentProvider implements CommandLineArgumentProvider { + @InputFile + @PathSensitive(PathSensitivity.RELATIVE) + abstract RegularFileProperty getFile() + + @Override + Iterable asArguments() { + [file.get().asFile.absolutePath] + } +}