hatex-guide-1.1.0.0: Text/LaTeX/Guide/Update.hs
module Text.LaTeX.Guide.Update (
updateGuide
) where
import System.Directory (
getCurrentDirectory
, setCurrentDirectory
, createDirectoryIfMissing
, getAppUserDataDirectory
, copyFile
)
import System.FilePath ((</>),(<.>))
import Text.LaTeX.Guide.Info (sectionList,otherResources)
-- | Update files in the user /hatex-guide/ directory, using
-- the files contained in a given 'FilePath'.
--
-- More in detail, @updateGuide fp@ sets the current directory
-- to @fp@, then it looks in the @src@ and @res@ directories
-- for the files specified by 'sectionList' and 'otherResources'
-- respectively. Then, it copies these files overwriting those
-- in the user /hatex-guide/ directory. This way, the next time
-- that 'writeGuide' is called it will use the updated files.
updateGuide :: FilePath -> IO ()
updateGuide fp = do
d0 <- getCurrentDirectory
setCurrentDirectory fp
appd <- getAppUserDataDirectory "hatex-guide"
putStrLn "Updating 'src'..."
createDirectoryIfMissing True $ appd </> "src"
mapM_ (\s -> let d = "src" </> s <.> "htxg"
in copyFile d $ appd </> d) sectionList
putStrLn "Updating 'res'..."
createDirectoryIfMissing True $ appd </> "res"
mapM_ (\r -> let d = "res" </> r
in copyFile d $ appd </> d) otherResources
setCurrentDirectory d0