{-# LANGUAGE NamedFieldPuns #-} module Distribution.Hi where import Distribution.Hi.Compiler (compile) import Distribution.Hi.FilePath (toDestionationPath, toDir) 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) -- | Main function cli :: InitFlags -> IO () cli initFlags@(InitFlags {moduleName, repository}) = do currentDirecotory <- getCurrentDirectory withTemplatesFromRepo (repository) $ \templates -> do let sourceAndDestinations = map (id &&& toDestionationPath initFlags) templates createDirectoryIfMissing True $ joinPath [currentDirecotory, "src", toDir moduleName] createDirectoryIfMissing True $ joinPath [currentDirecotory, "test", toDir moduleName] forM_ sourceAndDestinations $ \(s,d) -> compile s (joinPath [currentDirecotory, d]) $ context initFlags