module Control.Biegunka.Source.Zip
(
zip, zip_
) where
import Prelude hiding (zip)
import Codec.Archive.Zip (toArchive, extractFilesFromArchive)
import System.Directory (createDirectoryIfMissing, getCurrentDirectory, setCurrentDirectory)
import Control.Biegunka.Language
import Control.Biegunka.Script (Script, sourced)
import Control.Biegunka.Source.Archive (update)
zip :: String -> FilePath -> Script Actions () -> Script Sources ()
zip url path script = sourced "zip" url path script (updateZip url)
zip_ :: String -> FilePath -> Script Sources ()
zip_ url path = zip url path $ return ()
updateZip :: String -> FilePath -> IO ()
updateZip url path = update url path (with path . extractFilesFromArchive [] . toArchive)
with :: FilePath -> IO a -> IO ()
with path action = do
saved <- getCurrentDirectory
createDirectoryIfMissing True path
setCurrentDirectory path
action
setCurrentDirectory saved