module Hi.Template
(
readTemplates
, untemplate
) where
import Hi.Directory (inTemporaryDirectory)
import Hi.Types
import Control.Applicative
import Data.List.Split (splitOn)
import System.Exit (ExitCode)
import System.Process (system, readProcess)
readTemplates :: String -> IO Files
readTemplates repo =
inTemporaryDirectory "hi" $ do
_ <- cloneRepo repo
paths <- lsFiles
contents <- mapM readFile paths
return $ zip paths contents
untemplate :: FilePath -> FilePath
untemplate = head . splitOn ".template"
cloneRepo :: String -> IO ExitCode
cloneRepo repoUrl = do
_ <- system $ "git clone --no-checkout --quiet --depth=1 " ++ repoUrl ++ " " ++ "./"
system "git checkout HEAD --quiet"
lsFiles :: IO [String]
lsFiles = lines <$> readProcess "git" ["ls-files"] []