xz
xz compresses and decompresses files using LZMA2.
This module constructs
ward.process.cmd(...)invocations; it does not parse output. consumers can usewardlib.tools.out(or their own parsing) on the:output()result.
Notes:
Xz.run()always inserts--before paths.opts.levelis modeled as0..9and is emitted as-<level>.
Import
local Xz = require("wardlib.app.xz").Xz
API
Xz.run(paths, opts)
Builds: xz <opts...> -- <paths...>
Xz.compress(paths, opts)
Convenience: compression (ensures decompress = false).
Xz.decompress(paths, opts)
Convenience: decompression (-d).
Xz.raw(argv, opts)
Builds: xz <opts...> <argv...>
Options (XzOpts)
decompress: boolean?—-dkeep: boolean?—-kforce: boolean?—-fstdout: boolean?—-cverbose: boolean?—-vquiet: boolean?—-qextreme: boolean?—-elevel: integer?— compression level-0..-9threads: integer?—-T <n>(0 = auto)extra: string[]?— extra argv appended after modeled options
Examples
Compress with level and threads
local Xz = require("wardlib.app.xz").Xz
-- xz -e -6 -T 0 -- data.json
local cmd = Xz.compress("data.json", { level = 6, extreme = true, threads = 0 })
Decompress
local Xz = require("wardlib.app.xz").Xz
-- xz -d -k -- data.json.xz
local cmd = Xz.decompress("data.json.xz", { keep = true })
Write decompressed data to stdout
local Xz = require("wardlib.app.xz").Xz
-- xz -d -c -- file.xz
local cmd = Xz.decompress("file.xz", { stdout = true })
Pass-through extra xz flags
local Xz = require("wardlib.app.xz").Xz
-- xz --check=crc64 -- file
local cmd = Xz.run("file", { extra = { "--check=crc64" } })