packages feed

mathblog-0.6: src/MB/Initialize.hs

module MB.Initialize
    ( initializeDataDir
    )
where

import System.Directory
import System.FilePath

import Paths_mathblog
    ( getDataFileName
    )
import MB.Util (copyContents)

defaultConfigFilename :: String
defaultConfigFilename = "blog.cfg"

skelDir :: IO FilePath
skelDir = getDataFileName "skel"

initializeDataDir :: FilePath -> IO ()
initializeDataDir dir = do
  existsDir <- doesDirectoryExist dir

  case existsDir of
    False -> do
      putStrLn $ "Initializing data directory " ++ dir
      dataDir <- skelDir
      createDirectory dir
      copyContents dataDir dir

    True -> do
      existsConfig <- doesFileExist $ dir </> defaultConfigFilename
      case existsConfig of
        True -> putStrLn $ "Data directory already initialized; found " ++
                (dir </> defaultConfigFilename)
        False -> do
              putStrLn $ "Directory " ++ show dir ++ " already exists"
              putStrLn $ "but it does not contain a blog config file (" ++ defaultConfigFilename ++ ")"