zip

Начиная с 1.5.0

Содержит функции для работы с zip архивами

Функции

zip(inputPath, outputFile, mapper = def(entryPath) = entryPath) — создаёт zip архив с содержимым inputPath и сохраняет в outputFile.
mapper используется для задания имени конечного файла внутри архива, а также для фильтрации. Если в mapper вернуть пустую строку, то файл будет пропущен.
Возвращает количество заархивированных файлов, либо -1, если создать архив не удалось.

use zip
// Архивировать все файлы в директории
zip("/tmp/dir", "/tmp/1.zip")
// Архивировать .txt файлы
zip("/tmp/dir", "/tmp/2.zip", def(p) = p.endsWith(".txt") ? p : "")

zipFiles(input, outputFile) — создаёт zip архив с содержимым input и сохраняет в outputFile.
Если input — строка, то архивируется один файл или содержимое папки.
Если input — массив, то архивируются файлы и папки, перечисленные в нём.
Если input — ассоциативный массив, то архивируются файлы и папки перечисленные в ключах, а именами внутри архива будут служить значения.
Возвращает количество заархивированных файлов, либо -1, если создать архив не удалось.

use zip
zipFiles("/tmp/dir/file.txt", "/tmp/1.zip")
zipFiles(["/tmp/dir/file.txt", "/tmp/dir/readme.md"], "/tmp/2.zip")
zipFiles({"/tmp/dir/file.txt" : "docs/1.md", "/tmp/dir/readme.md" : "docs/2.md"}, "/tmp/3.zip")

unzip(input, output, mapper = def(entryName) = entryPath) — распаковывает zip архив input в папку output.
mapper используется для задания имени конечного файла, а также для фильтрации. Если в mapper вернуть пустую строку, то файл будет пропущен.
Возвращает количество разархивированных файлов, либо -1, если разархивировать архив не удалось.

use zip
// Распаковать все файлы в директории
unzip("/tmp/1.zip", "/tmp/dir")
// Распаковать .txt файлы
unzip("/tmp/2.zip", "/tmp/dir", def(p) = p.endsWith(".txt") ? p : "")

unzipFiles(input, output) — распаковывает output файлы из zip архива.
Если output — строка, то разархивируется один файл.
Если output — массив, то разархивируются файлы, перечисленные в нём.
Если output — ассоциативный массив, то разархивируются файлы перечисленные в ключах, а именами файлов будут служить значения.
Возвращает количество разархивированных файлов, либо -1, если разархивировать архив не удалось.

use zip
unzipFiles("/tmp/1.zip", "file.txt")
unzipFiles("/tmp/2.zip", ["file.txt", "readme.md"])
unzipFiles("/tmp/3.zip", {"docs/1.md" : "/tmp/dir/file.txt", "docs/2.md" : "/tmp/dir/readme.md"})

listZipEntries(input) — возвращает массив с именами файлов zip архива