MyNixOS website logo
Description

Hakyll compiler for arbitrary external processes.

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

hakyll-process

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:

  • execCompilerWith is the most common. This allows the caller to declaratively run an external process and includes support for passing arguments.
  • execCompiler is an aliased version of execCompilerWith that provides no arguments to the external executable/process.
  • unsafeExecCompiler is the less type safe and more manual method to calling external executables. This provides no helper functionality but may be useful if you are already manually building out a compiler in your site generator.

Example

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
Metadata

Version

0.0.3.0

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows