mirror of
https://github.com/revanced/revanced-cli.git
synced 2024-12-04 09:22:54 +01:00
fix: CLI not working
This commit is contained in:
parent
31853fe539
commit
29105bab3d
@ -23,16 +23,20 @@ internal object Patcher {
|
|||||||
if (output.exists()) Files.delete(output.toPath())
|
if (output.exists()) Files.delete(output.toPath())
|
||||||
args.inputFile.copyTo(output)
|
args.inputFile.copyTo(output)
|
||||||
|
|
||||||
ZipFileSystemUtils(output).use { fileSystem ->
|
val result = patcher.save()
|
||||||
|
val inputFile = if (!args.disableResourcePatching && result.resourceFile != null) {
|
||||||
|
result.resourceFile
|
||||||
|
} else null
|
||||||
|
ZipFileSystemUtils(inputFile, output).use { fileSystem ->
|
||||||
// replace all dex files
|
// replace all dex files
|
||||||
val result = patcher.save()
|
|
||||||
result.dexFiles.forEach {
|
result.dexFiles.forEach {
|
||||||
fileSystem.write(it.name, it.memoryDataStore.data)
|
fileSystem.write(it.name, it.memoryDataStore.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// write resources
|
// inputFile being null implies resource patching being disabled
|
||||||
if (!args.disableResourcePatching) {
|
if (inputFile != null) {
|
||||||
fileSystem.writePathRecursively(File(args.cacheDirectory).resolve("build").toPath())
|
// write resources
|
||||||
|
fileSystem.writeInput()
|
||||||
fileSystem.uncompress(*result.doNotCompress!!.toTypedArray())
|
fileSystem.uncompress(*result.doNotCompress!!.toTypedArray())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,14 +7,15 @@ import java.nio.file.Files
|
|||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.util.zip.ZipEntry
|
import java.util.zip.ZipEntry
|
||||||
|
|
||||||
internal class ZipFileSystemUtils(
|
internal class ZipFileSystemUtils(input: File?, output: File) : Closeable {
|
||||||
file: File
|
private val inFileSystem = if (input != null) {
|
||||||
) : Closeable {
|
FileSystems.newFileSystem(input.toPath())
|
||||||
private var zipFileSystem = FileSystems.newFileSystem(file.toPath(), mapOf("noCompression" to true))
|
} else null
|
||||||
|
private val outFileSystem = FileSystems.newFileSystem(output.toPath(), mapOf("noCompression" to true))
|
||||||
|
|
||||||
private fun Path.deleteRecursively() {
|
private fun Path.deleteRecursively() {
|
||||||
if (!Files.exists(this)) {
|
if (!Files.exists(this)) {
|
||||||
throw IllegalStateException("File exists in real folder but not in zip file system")
|
throw IllegalStateException("File exists in input but not in output, cannot delete")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Files.isDirectory(this)) {
|
if (Files.isDirectory(this)) {
|
||||||
@ -26,21 +27,25 @@ internal class ZipFileSystemUtils(
|
|||||||
Files.delete(this)
|
Files.delete(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun writePathRecursively(path: Path) {
|
internal fun writeInput() {
|
||||||
Files.list(path).let { fileStream ->
|
if (inFileSystem == null) {
|
||||||
|
throw IllegalArgumentException("Input file not set")
|
||||||
|
}
|
||||||
|
val root = inFileSystem.getPath(inFileSystem.separator)
|
||||||
|
|
||||||
|
Files.list(root).close()
|
||||||
|
|
||||||
|
Files.list(root).also { fileStream ->
|
||||||
fileStream.forEach { filePath ->
|
fileStream.forEach { filePath ->
|
||||||
val fileSystemPath = filePath.getRelativePath(path)
|
val fileSystemPath = filePath.getRelativePath(root)
|
||||||
fileSystemPath.deleteRecursively()
|
fileSystemPath.deleteRecursively()
|
||||||
}
|
}
|
||||||
|
|
||||||
fileStream
|
|
||||||
}.close()
|
}.close()
|
||||||
|
|
||||||
Files.walk(path).let { fileStream ->
|
Files.walk(root).also { fileStream ->
|
||||||
// don't include build directory
|
// don't include build directory by skipping the root node.
|
||||||
// by skipping the root node.
|
|
||||||
fileStream.skip(1).forEach { filePath ->
|
fileStream.skip(1).forEach { filePath ->
|
||||||
val relativePath = filePath.getRelativePath(path)
|
val relativePath = filePath.getRelativePath(root)
|
||||||
|
|
||||||
if (Files.isDirectory(filePath)) {
|
if (Files.isDirectory(filePath)) {
|
||||||
Files.createDirectory(relativePath)
|
Files.createDirectory(relativePath)
|
||||||
@ -49,17 +54,18 @@ internal class ZipFileSystemUtils(
|
|||||||
|
|
||||||
Files.copy(filePath, relativePath)
|
Files.copy(filePath, relativePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
fileStream
|
|
||||||
}.close()
|
}.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun write(path: String, content: ByteArray) = Files.write(zipFileSystem.getPath(path), content)
|
internal fun write(path: String, content: ByteArray) = Files.write(outFileSystem.getPath(path), content)
|
||||||
|
|
||||||
private fun Path.getRelativePath(path: Path): Path = zipFileSystem.getPath(path.relativize(this).toString())
|
private fun Path.getRelativePath(path: Path): Path = outFileSystem.getPath(path.relativize(this).toString())
|
||||||
|
|
||||||
internal fun uncompress(vararg paths: String) =
|
internal fun uncompress(vararg paths: String) =
|
||||||
paths.forEach { Files.setAttribute(zipFileSystem.getPath(it), "zip:method", ZipEntry.STORED) }
|
paths.forEach { Files.setAttribute(outFileSystem.getPath(it), "zip:method", ZipEntry.STORED) }
|
||||||
|
|
||||||
override fun close() = zipFileSystem.close()
|
override fun close() {
|
||||||
|
inFileSystem?.close()
|
||||||
|
outFileSystem.close()
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user