in plugins/cli/cli-lib/src/main/java/co/elastic/gradle/cli/base/ExtractAndSetExecutableTransform.java [52:97]
private void doTransform(TransformOutputs outputs) throws IOException {
File inputFile = getInputArtifact().get().getAsFile();
String executableName = inputFile.getName()
.split("\\.transform")[0]
.replace(".tar.xz", "");
if (inputFile.getName().contains("tar.xz")) {
try (TarArchiveInputStream archive = new TarArchiveInputStream(
new XZCompressorInputStream(
new BufferedInputStream(new FileInputStream(inputFile))
))
) {
TarArchiveEntry entry;
while ((entry = archive.getNextTarEntry()) != null) {
if (entry.isFile() && !List.of("README.txt", "LICENSE.txt").contains(entry.getName())) {
final File outputFile = outputs.file(executableName);
try (OutputStream out = new BufferedOutputStream(new FileOutputStream(outputFile))) {
out.write(IOUtils.toByteArray(archive, entry.getSize()));
setExecutableBit(outputFile);
}
} else {
IOUtils.skip(archive, entry.getSize());
}
}
}
} else if (inputFile.getName().contains("manifest-tool") && !inputFile.getName().contains("v1")) {
try (TarArchiveInputStream archive = new TarArchiveInputStream(
new GzipCompressorInputStream(
new BufferedInputStream(new FileInputStream(inputFile))
))
) {
TarArchiveEntry entry;
while ((entry = archive.getNextTarEntry()) != null) {
final File outputFile = outputs.file(entry.getName());
try (OutputStream out = new BufferedOutputStream(new FileOutputStream(outputFile))) {
out.write(IOUtils.toByteArray(archive, entry.getSize()));
}
setExecutableBit(outputFile);
}
}
} else {
File outputFile = outputs.file(executableName);
Files.copy(inputFile.toPath(), outputFile.toPath());
setExecutableBit(outputFile);
}
}