4
0
Fork 0
mirror of https://github.com/Anvilcraft/modpacktools synced 2024-06-10 22:49:26 +02:00

BuildTwitch.kt can now install files

This commit is contained in:
Timo Ley 2020-07-28 17:49:16 +02:00
parent 3a5a26a9b7
commit b33db1b469
2 changed files with 56 additions and 4 deletions

View file

@ -2,14 +2,19 @@ package ley.anvil.modpacktools.commands
import ley.anvil.modpacktools.MPJH
import ley.anvil.modpacktools.command.CommandReturn
import ley.anvil.modpacktools.command.CommandReturn.Companion.fail
import ley.anvil.modpacktools.command.CommandReturn.Companion.success
import ley.anvil.modpacktools.command.ICommand
import ley.anvil.modpacktools.command.LoadCommand
import ley.anvil.modpacktools.util.convertAStoManifest
import ley.anvil.modpacktools.util.manifest.convertAStoManifest
import ley.anvil.modpacktools.util.zipDir
import org.apache.commons.io.FileUtils
import java.io.File
import java.io.FileOutputStream
import java.io.FileWriter
import java.nio.file.Files
import java.nio.file.Paths
import java.nio.file.StandardCopyOption
import java.util.zip.ZipOutputStream
@LoadCommand
@ -22,19 +27,67 @@ object BuildTwitch : ICommand {
val tmp = File("./.mpt/twitch")
dir.mkdirs()
tmp.mkdirs()
FileUtils.cleanDirectory(tmp)
val writer = FileWriter(tmp.path + "/manifest.json")
ml.manifest?.write(writer)
writer.close()
//TODO download & install files
for (uf in ml.links) {
if (uf.key.isFile) {
val file = uf.key.getFile("./src/")
if (file.exists()) {
if (uf.value == "internal.override") {
if (file.extension == "zip") {
//TODO unzip to ./.mpt/twitch/overrides
} else if (file.isDirectory) {
for (f in file.listFiles()) {
val dir = File("./.mpt/twitch/overrides")
dir.mkdirs()
val target = Paths.get(dir.path + "/" + f.name)
Files.copy(f.toPath(), target, StandardCopyOption.REPLACE_EXISTING)
}
} else {
return fail("Only zip files can be used with 'internal.override'")
}
} else if (uf.value.startsWith("internal.dir")) {
val parts = uf.value.split(":")
if (parts.size >= 2) {
val dir = File("./.mpt/twitch/" + parts[1])
dir.mkdirs()
val target = Paths.get(dir.path + "/" + file.name)
Files.copy(file.toPath(), target, StandardCopyOption.REPLACE_EXISTING)
} else {
return fail("No directory was given for installer 'internal.dir'")
}
} else if (uf.value.startsWith("internal.zip")) {
if (file.extension == "zip") {
val parts = uf.value.split(":")
if (parts.size >= 2) {
//TODO unzip file to parts[1]
} else {
return fail("No directory was given for installer 'internal.zip'")
}
} else {
return fail("Only zip files can be used with 'internal.zip'")
}
} else {
return fail("The installer '${uf.value}' is not supportet for Twitch export")
}
}
} else if (uf.key.isURL) {
//TODO download and install the file (work for Lord ;) )
} else {
return fail("{$uf.key.link} is neither a file nor an URL")
}
}
val zip = ZipOutputStream( FileOutputStream(dir.path + "/$archiveName.zip"))
zipDir(tmp, "", zip)
zip.flush()
zip.close()
return success()
return success("Successfully build twitch zip")
}
override val name: String = "buildTwitch"

View file

@ -104,7 +104,6 @@ fun KClass<*>.getFun(name: String): KFunction<*>? = this.functions.find {it.name
fun zipDir(dir: File, parent: String?, zip: ZipOutputStream) {
for (file in dir.listFiles()){
println(file.name)
if (file.isDirectory) {
zipDir(file, parent + file.name + "/", zip)
continue