diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/EncoderServer.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/EncoderServer.kt index 9907331f68..d97f68a23d 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/EncoderServer.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/project/EncoderServer.kt @@ -22,6 +22,7 @@ import org.apache.commons.codec.digest.DigestUtils import software.amazon.awssdk.utils.UserHomeDirectoryUtils import software.aws.toolkits.core.utils.createParentDirectories import software.aws.toolkits.core.utils.exists +import software.aws.toolkits.core.utils.filePermissions import software.aws.toolkits.core.utils.getLogger import software.aws.toolkits.core.utils.info import software.aws.toolkits.core.utils.tryDirOp @@ -163,9 +164,9 @@ class EncoderServer(val project: Project) : Disposable { } } } - if (manifestManager.currentOs != "windows") { - makeFileExecutable(nodePath) - } + + makeFileExecutable(nodePath) + val files = cachePath.toFile().listFiles() if (files.isNotEmpty()) { val filenames = files.map { it.name } @@ -224,7 +225,7 @@ class EncoderServer(val project: Project) : Disposable { PosixFilePermission.OTHERS_READ, PosixFilePermission.OTHERS_EXECUTE, ) - Files.setPosixFilePermissions(filePath, permissions) + filePath.filePermissions(permissions) } private fun unzipFile(zipFilePath: Path, destDir: Path) { diff --git a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/ZipDecompressor.kt b/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/ZipDecompressor.kt deleted file mode 100644 index 2e1858dc7e..0000000000 --- a/plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/utils/ZipDecompressor.kt +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.utils - -import com.intellij.openapi.util.SystemInfo -import com.intellij.openapi.util.io.FileUtil -import org.apache.commons.compress.archivers.zip.ZipArchiveEntry -import org.apache.commons.compress.archivers.zip.ZipFile -import org.apache.commons.compress.utils.SeekableInMemoryByteChannel -import java.io.File -import java.io.FileOutputStream -import java.io.IOException -import java.nio.file.Files -import java.nio.file.attribute.PosixFilePermission - -// TODO: Write tests -class ZipDecompressor(sourceBytes: ByteArray) : AutoCloseable { - private val zipFile = ZipFile(SeekableInMemoryByteChannel(sourceBytes)) - private val zipEntries = zipFile.entries.toList() - private val directorySplitRegex = Regex.fromLiteral("""[/\\]""") - - fun extract(destination: File) { - zipEntries.forEach { - val outputFile = outputFile(destination, it.name) - // TODO: Handle symlink if we ever need it - when { - it.isDirectory -> FileUtil.createDirectory(outputFile) - else -> createFile(outputFile, it) - } - } - } - - private fun createFile(outputFile: File, zipEntry: ZipArchiveEntry) { - zipFile.getInputStream(zipEntry).use { zipStream -> - FileUtil.createParentDirs(outputFile) - - FileOutputStream(outputFile).use { outputStream -> - zipStream.copyTo(outputStream) - } - - if (SystemInfo.isUnix) { - Files.setPosixFilePermissions(outputFile.toPath(), convertPermissions(zipEntry.unixMode)) - } - } - } - - private fun outputFile(outputDir: File, entryName: String): File { - if (entryName.split(directorySplitRegex).contains("..")) { - throw IOException("Entry name attempting to traverse up directory: $entryName") - } - - return File(outputDir, entryName) - } - - private fun convertPermissions(mode: Int): Set { - val permissions = mutableSetOf() - if ((mode and 400) > 0) { - permissions.add(PosixFilePermission.OWNER_READ) - } - if ((mode and 200) > 0) { - permissions.add(PosixFilePermission.OWNER_WRITE) - } - if ((mode and 100) > 0) { - permissions.add(PosixFilePermission.OWNER_EXECUTE) - } - if ((mode and 40) > 0) { - permissions.add(PosixFilePermission.GROUP_READ) - } - if ((mode and 20) > 0) { - permissions.add(PosixFilePermission.GROUP_WRITE) - } - if ((mode and 10) > 0) { - permissions.add(PosixFilePermission.GROUP_EXECUTE) - } - if ((mode and 4) > 0) { - permissions.add(PosixFilePermission.OTHERS_READ) - } - if ((mode and 2) > 0) { - permissions.add(PosixFilePermission.OTHERS_WRITE) - } - if ((mode and 1) > 0) { - permissions.add(PosixFilePermission.OTHERS_EXECUTE) - } - return permissions - } - - override fun close() { - zipFile.close() - } -}