madlang-2.4.2.1: src/Text/Madlibs/Exec/Helpers.hs
module Text.Madlibs.Exec.Helpers (fetchPackages, cleanPackages) where
import qualified Codec.Archive.Tar as Tar
import Codec.Compression.GZip (decompress)
import qualified Data.ByteString.Lazy as BSL
import Network.HTTP.Client hiding (decompress)
import System.Directory (removeFile)
import System.Environment (getEnv)
-- TODO set remote package url flexibly
fetchPackages :: IO ()
fetchPackages = do
putStrLn "fetching libraries..."
manager <- newManager defaultManagerSettings
initialRequest <- parseRequest "http://vmchale.com/static/packages.tar.gz"
response <- httpLbs (initialRequest { method = "GET" }) manager
BSL.writeFile "crapfile.tar.gz" $ responseBody response
putStrLn "unpacking libraries..."
home <- getEnv "HOME"
let packageDir = home ++ "/.madlang"
Tar.unpack packageDir . Tar.read . decompress =<< BSL.readFile "crapfile.tar.gz"
cleanPackages :: IO ()
cleanPackages = do
removeFile "crapfile.tar.gz"
putStrLn "done."