self-extract-0.1.0.0: src/Codec/SelfExtract/Tar.hs
module Codec.SelfExtract.Tar
( tar
, untar
) where
import Path (Dir, File, Path, toFilePath)
import Path.IO (ensureDir)
import System.Process (callProcess)
-- | Zip the given directory into the given archive.
--
-- Shelling out to `tar` because Haskell Tar packages would need the C header files, which we don't
-- require on the client end.
tar :: Path b0 Dir -> Path b1 File -> IO ()
tar src archive = callProcess "tar" ["-czf", toFilePath archive, "-C", toFilePath src, "."]
-- | Extract the given archive to the given directory.
untar :: Path b0 File -> Path b1 Dir -> IO ()
untar archive dest = do
ensureDir dest
callProcess "tar" ["-xzf", toFilePath archive, "-C", toFilePath dest]