packages feed

rosmsg-bin-0.1.0.0: app/genhs/Stack.hs

{-# LANGUAGE FlexibleContexts, OverloadedStrings #-}
module Stack (newPackage)  where

import qualified Data.Text as T
import Control.Monad.Logger

import Stack.Types.TemplateName
import Stack.Types.PackageName
import Stack.Types.StackT
import Stack.Types.Config
import Stack.Config
import Stack.New

newPackage :: FilePath -> T.Text -> String -> IO FilePath
newPackage dir name templatePath = do
    case parseTemplateNameFromString templatePath of
        Left e -> error e
        Right template -> do manager <- newTLSManager
                             config  <- (loadConfigWith manager :: IO Config) 
                             runStackWith manager config $ do
                                n <- parsePackageName (sanitize name)
                                new (NewOpts n False (Just template) mempty) False 
                                return (T.unpack (sanitize name))
  where
    loadConfigWith m = lcConfig <$>
        runStackLoggingT m logging False False
            (loadConfig mempty Nothing Nothing) 
    runStackWith m c = runStackT m logging c False False
    logging  = LevelDebug
    sanitize = T.replace "_" "-"