module Hi where
import Hi.Compiler (compile)
import Hi.FilePath (toDestionationPath)
import Hi.Context (context)
import Hi.Types
import 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
putStrLn $ "Creating new project from repository: " ++ repository
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'
putStrLn $ " " ++ green "create" ++ " " ++ dst
compile src dst' $ context initFlags
green :: String -> String
green x = "\x1b[32m" ++ x ++ "\x1b[0m"