module Hi.Template
(
isTemplate
, readTemplates
, untemplate
) where
import Hi.Directory (inTemporaryDirectory)
import qualified Hi.Git as Git
import Hi.Types
import Control.Applicative ((<$>))
import qualified Data.ByteString as BS (readFile)
import Data.List (isSuffixOf)
import Data.List.Split (splitOn)
readTemplates :: TemplateSource -> IO Files
readTemplates (FromRepo repo) =
inTemporaryDirectory "hi" $ do
Git.clone $ Git.expandUrl repo
paths <- Git.lsFiles
mapM fetchFile paths
fetchFile :: FilePath -> IO File
fetchFile fp | isTemplate fp = TemplateFile fp <$> BS.readFile fp
| otherwise = RegularFile fp <$> BS.readFile fp
isTemplate :: FilePath -> Bool
isTemplate = isSuffixOf ".template"
untemplate :: FilePath -> FilePath
untemplate = head . splitOn ".template"