module Text.Madlibs.Exec.Helpers (fetchPackages, cleanPackages, installVimPlugin) where
import qualified Codec.Archive.Tar as Tar
import Codec.Archive.Zip (ZipOption (..),
extractFilesFromArchive, toArchive)
import Codec.Compression.GZip (decompress)
import Network.HTTP.Client hiding (decompress)
import System.Directory (removeFile)
import System.Environment (getEnv)
import System.Info (os)
installVimPlugin :: IO ()
installVimPlugin = do
putStrLn "fetching latest vim plugin..."
manager <- newManager defaultManagerSettings
initialRequest <- parseRequest "http://vmchale.com/static/vim.zip"
response <- httpLbs (initialRequest { method = "GET" }) manager
let byteStringResponse = responseBody response
putStrLn "installing locally..."
home <- getEnv "HOME"
let packageDir = if os /= "mingw32" then home ++ "/.vim" else home ++ "\\vimfiles"
let archive = toArchive byteStringResponse
let options = OptDestination packageDir
extractFilesFromArchive [options] archive
putStrLn "cleaning junk..."
removeFile (packageDir ++ "/TODO.md")
removeFile (packageDir ++ "/vim-screenshot.png")
removeFile (packageDir ++ "/README.md")
removeFile (packageDir ++ "/LICENSE")
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
let byteStringResponse = responseBody response
putStrLn "unpacking libraries..."
home <- getEnv "HOME"
let packageDir = if os /= "mingw32" then home ++ "/.madlang" else home ++ "\\.madlang"
Tar.unpack packageDir . Tar.read . decompress $ byteStringResponse
cleanPackages :: IO ()
cleanPackages =
putStrLn "done."