project-template-0.1.2: Specify Haskell project templates and generate files

Safe HaskellNone

Text.ProjectTemplate

Contents

Synopsis

Create a template

createTemplate :: Monad m => GInfConduit (FilePath, m ByteString) m ByteStringSource

Create a template file from a stream of file/contents combinations.

Since 0.1.0

Unpack a template

unpackTemplateSource

Arguments

:: MonadThrow m 
=> (FilePath -> Sink ByteString m ())

receive individual files

-> (Text -> Text)

fix each input line, good for variables

-> Sink ByteString m () 

Unpack a template to some destination. Destination is provided by the first argument.

The second argument allows you to modify the incoming stream, usually to replace variables. For example, to replace PROJECTNAME with myproject, you could use:

 Data.Text.replace "PROJECTNAME" "myproject"

Note that this will affect both file contents and file names.

Since 0.1.0

Receivers

type FileReceiver m = FilePath -> Sink ByteString m ()Source

The first argument to unpackTemplate, specifying how to receive a file.

Since 0.1.0

receiveMem :: MonadWriter (Map FilePath LByteString) m => FileReceiver mSource

Receive files to a Writer monad in memory.

 execWriter $ runExceptionT_ $ src $$ unpackTemplate receiveMem id

Since 0.1.0

receiveFSSource

Arguments

:: MonadResource m 
=> FilePath

root

-> FileReceiver m 

Receive files to the given folder on the filesystem.

 unpackTemplate (receiveFS "some-destination") (T.replace "PROJECTNAME" "foo")

Since 0.1.0

Exceptions