1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00

VerifyKobaltZip.

This commit is contained in:
Cedric Beust 2016-01-06 16:16:48 -08:00
parent b83c012c62
commit 19ad4ae3a2
3 changed files with 61 additions and 5 deletions

View file

@ -56,5 +56,9 @@ class Args {
@Parameter(names = arrayOf("--update"), description = "Update to the latest version of Kobalt")
var update: Boolean = false
@Parameter(names = arrayOf("--verifyDistribution"), description = "Verify the distribution",
hidden = true)
var verifyDistribution: Boolean = false
}

View file

@ -5,10 +5,7 @@ import com.beust.kobalt.api.IClasspathDependency
import com.beust.kobalt.api.Kobalt
import com.beust.kobalt.api.PluginTask
import com.beust.kobalt.api.Project
import com.beust.kobalt.app.BuildFileCompiler
import com.beust.kobalt.app.MainModule
import com.beust.kobalt.app.ProjectGenerator
import com.beust.kobalt.app.UpdateKobalt
import com.beust.kobalt.app.*
import com.beust.kobalt.app.remote.KobaltClient
import com.beust.kobalt.app.remote.KobaltServer
import com.beust.kobalt.internal.PluginInfo
@ -148,10 +145,12 @@ private class Main @Inject constructor(
} else if (args.serverMode) {
server.run()
} else {
// Update doesn't require to parse the build file
// Options that don't need Build.kt to be parsed first
if (args.update) {
// --update
updateKobalt.updateKobalt()
} else if (args.verifyDistribution) {
VerifyKobaltZip().run()
} else {
//
// Everything below requires to parse the build file first

View file

@ -0,0 +1,53 @@
package com.beust.kobalt.app
import com.beust.kobalt.KobaltException
import com.beust.kobalt.api.Kobalt
import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.misc.log
import java.io.FileInputStream
import java.util.jar.JarFile
import java.util.jar.JarInputStream
class VerifyKobaltZip {
fun run() {
var success = true
var foundKobaltw = false
var foundJar = false
var foundWrapperJar = false
val jarFilePath = "kobalt-" + Kobalt.version + ".jar"
val zipFilePath = KFiles.joinDir("kobaltBuild", "libs", "kobalt-" + Kobalt.version + ".zip")
val zipFile = JarFile(zipFilePath)
val stream = JarInputStream(FileInputStream(zipFilePath))
var entry = stream.nextEntry
while (entry != null) {
if (entry.name == "kobaltw") {
foundKobaltw = true
} else if (entry.name.endsWith(jarFilePath)) {
val ins = zipFile.getInputStream(entry)
if (ins.available() < 20000000) {
throw KobaltException(jarFilePath + " is too small: " + jarFilePath)
}
foundJar = true
} else if (entry.name.endsWith("kobalt-wrapper.jar")) {
foundWrapperJar = true
} else {
success = false
}
entry = stream.nextEntry
}
if (! success) {
throw KobaltException("Found unexpected file in $zipFilePath")
}
if (! foundKobaltw) {
throw KobaltException("Couldn't find kobaltw in $zipFilePath")
}
if (! foundJar) {
throw KobaltException("Couldn't find jar in $zipFilePath")
}
if (! foundWrapperJar) {
throw KobaltException("Couldn't find wrapper jar in $zipFilePath")
}
log(1, "$zipFilePath looks correct")
}
}