project-template- Specify Haskell project templates and generate files

Safe HaskellNone




Create a template

createTemplate :: Monad m => ConduitM (FilePath, m ByteString) ByteString m () Source #

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

Since 0.1.0

Unpack a template

unpackTemplate Source #


:: MonadThrow m 
=> (FilePath -> ConduitM ByteString o m ())

receive individual files

-> (Text -> Text)

fix each input line, good for variables

-> ConduitM ByteString o 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


type FileReceiver m = FilePath -> ConduitM ByteString Void m () Source #

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

Since 0.1.0

receiveMem :: MonadWriter (Map FilePath ByteString) m => FileReceiver m Source #

Receive files to a Writer monad in memory.

execWriter $ runExceptionT_ $ src $$ unpackTemplate receiveMem id

Since 0.1.0

receiveFS Source #


:: MonadResource m 
=> FilePath


-> FileReceiver m 

Receive files to the given folder on the filesystem.

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

Since 0.1.0