Does not support distributions lacking a root directory
I am attempting to use GrabTool to install a GitHub distribution that does not contain a root directory within the ZIP.
org.ysb33r.grolifant.api.errors.DistributionFailedException: Grabatool: structurizr 'https://github.com/structurizr/cli/releases/download/v1.12.0/structurizr-cli-1.12.0.zip contains too many directories. Expected to find exactly 1 directory.
at org.ysb33r.grolifant.api.v4.AbstractDistributionInstaller.getAndVerifyDistributionRoot(AbstractDistributionInstaller.groovy:292)
at org.ysb33r.grolifant.api.v4.AbstractDistributionInstaller$1.verify(AbstractDistributionInstaller.groovy:160)
Example script to reproduce (Kotlin syntax):
import java.net.URI
import org.ysb33r.gradle.grabatool.GrabaToolEntryPointDescriptor
import org.ysb33r.gradle.grabatool.GrabaToolUriDescriptor
plugins {
id ("org.ysb33r.grabatool") version "0.4.1"
}
grabatool {
tool("structurizr") {
uri { cfg: GrabaToolUriDescriptor ->
URI("https://github.com/structurizr/cli/releases/download/v${cfg.version}/structurizr-cli-${cfg.version}.zip")
}
entrypoint { ep: GrabaToolEntryPointDescriptor ->
val ext = if (ep.os.isWindows()) {
".exe"
} else {
".sh"
}
File(ep.distributionRoot, "structurizr${ext}")
}
}
}
val structVersion = "1.12.0"
println(grabatool.get("structurizr").version(structVersion).entrypoint("foo"))