module Distribution.Hi where
import Distribution.Hi.Compiler (compile)
import Distribution.Hi.FilePath (toDestionationPath)
import Distribution.Hi.Context (context)
import Distribution.Hi.Types
import Distribution.Hi.Template (withTemplatesFromRepo)
import Control.Arrow ((&&&))
import Control.Monad
import System.Directory (createDirectoryIfMissing,
getCurrentDirectory)
import System.FilePath (joinPath, dropFileName)
cli :: InitFlags -> IO ()
cli initFlags@(InitFlags {repository}) = do
currentDirecotory <- getCurrentDirectory
withTemplatesFromRepo repository $ \templates -> do
let sourceAndDestinations = map (id &&& toDestionationPath initFlags) templates
forM_ sourceAndDestinations $ \(src,dst) -> do
let dst' = joinPath [currentDirecotory, dst]
createDirectoryIfMissing True $ dropFileName dst'
compile src dst' $ context initFlags