hakyll-process: Hakyll compiler for arbitrary external processes.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

Exposes Hakyll compilers for passing file paths to external processes. Transformed results are made available as Hakyll Items.

[Skip to Readme]


Change log CHANGELOG.md
Dependencies base (>=4.7 && <5), bytestring (>= && <0.10.11), hakyll (>=4.12 && <5), typed-process (>=0.2.3 && <0.3) [details]
License BSD-3-Clause
Copyright 2020 Jim McStanton
Author Jim McStanton
Maintainer jim@jhmcstanton.com
Category Web
Home page https://github.com/jhmcstanton/hakyll-process#readme
Source repo head: git clone https://github.com/jhmcstanton/hakyll-process
Uploaded by jhmcstanton at 2020-10-16T10:11:32Z




Maintainer's Corner

For package maintainers and hackage trustees

Readme for hakyll-process-

[back to package description]


Hakyll compilers for passing Hakyll items to external processes. This is useful for tools that do not have Haskell bindings or may not make sense to have Haskell bindings, like Typescript or LaTex compilers.

Common Usage

There are a few main entry points for this library:


This example shows how this library can be used to include latex files in your site source and include the output pdf in your target site.

import qualified Data.ByteString.Lazy.Char8 as B
import           Hakyll.Process

main = do
  hakyll $ do
    match "resume/*.tex" $ do
      route   $ setExtension "pdf"
      compile $ execCompilerWith (execName "xelatex") [ProcArg "-output-directory=resume/", HakFilePath] (newExtOutFilePath "pdf")

    -- alternative, manual method, using unsafeExecCompiler
    match "resume/*.tex" $ do
      route   $ setExtension "pdf"
      compile $ do
        input <- getResourceFilePath
        let outputReader _ = B.readFile (newExtension "pdf" input)
        unsafeExecCompiler (execName "xelatex") ["-output-directory=resume/", input] outputReader