packages feed

ema-0.2.0.0: ema.cabal

cabal-version:      2.4
name:               ema
version:            0.2.0.0
license:            AGPL-3.0-only
copyright:          2021 Sridhar Ratnakumar
maintainer:         srid@srid.ca
author:             Sridhar Ratnakumar
category:           Web
synopsis:           Static site generator library with hot reload
bug-reports:        https://github.com/srid/ema/issues
homepage:           https://ema.srid.ca/
description:
  Ema is a next-gen Haskell library for building jamstack-style static sites.
  Ema sites are change-aware; in addition to good ol’ static site generation,
  it provides a live server supporting fast hot-reload in the browser on code
  or data change.

extra-source-files:
  CHANGELOG.md
  LICENSE
  README.md

flag with-examples
  description: Include examples and their dependencies
  default:     True

flag with-helpers
  description: Include helper modules based on blaze-html
  default:     True

library
  -- Modules included in this executable, other than Main.
  -- other-modules:

  -- LANGUAGE extensions used by modules in this package.
  -- other-extensions:
  build-depends:
    , aeson
    , async
    , base                   >=4.13.0.0 && <=4.17.0.0
    , containers
    , data-default
    , directory
    , filepath
    , filepattern
    , http-types
    , lvar
    , monad-logger
    , monad-logger-extras
    , neat-interpolation
    , optparse-applicative
    , relude                 >=0.7      && <1.0
    , safe-exceptions
    , stm
    , text
    , unicode-transforms
    , unionmount
    , unliftio
    , uri-encode
    , wai
    , wai-middleware-static
    , wai-websockets
    , warp
    , websockets

  if (flag(with-helpers) || flag(with-examples))
    build-depends:
      , blaze-html
      , blaze-markup
      , commonmark
      , commonmark-extensions
      , commonmark-pandoc
      , fsnotify               ^>=0.3
      , megaparsec
      , pandoc-types
      , parsec
      , parser-combinators
      , time
      , yaml

    if flag(with-examples)
      build-depends: time

  mixins:
    base hiding (Prelude),
    relude (Relude as Prelude, Relude.Container.One),
    relude

  ghc-options:
    -Wall -Wincomplete-record-updates -Wincomplete-uni-patterns

  default-extensions:
    FlexibleContexts
    FlexibleInstances
    KindSignatures
    LambdaCase
    MultiParamTypeClasses
    MultiWayIf
    OverloadedStrings
    ScopedTypeVariables
    TupleSections
    ViewPatterns

  exposed-modules:
    Ema
    Ema.CLI

  if (flag(with-helpers) || flag(with-examples))
    exposed-modules:
      Ema.Helper.FileSystem
      Ema.Helper.Markdown
      Ema.Helper.PathTree
      Ema.Helper.Tailwind

  other-modules:
    Ema.App
    Ema.Asset
    Ema.Class
    Ema.Generate
    Ema.Route
    Ema.Route.Slug
    Ema.Server

  if flag(with-examples)
    exposed-modules:
      Ema.Example.Ex01_HelloWorld
      Ema.Example.Ex02_Basic
      Ema.Example.Ex03_Clock

  hs-source-dirs:     src
  default-language:   Haskell2010