packages feed

ema-0.8.2.0: ema.cabal

cabal-version:      2.4
name:               ema
version:            0.8.2.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

data-dir:           www
data-files:
  ema-error.html
  ema-indicator.html
  ema-shim.js

-- This flag is enabled by default just so `bin/run` can work on macOS M1.
-- When disabling, ensure that macOS build doesn't break.
flag with-examples
  description: Include examples and their dependencies
  default:     True

flag with-extra
  description: Include non-core functionality
  default:     True

common extensions
  default-extensions:
    NoStarIsType
    BangPatterns
    ConstraintKinds
    DataKinds
    DeriveDataTypeable
    DeriveFoldable
    DeriveFunctor
    DeriveGeneric
    DeriveLift
    DeriveTraversable
    DerivingStrategies
    DerivingVia
    EmptyCase
    EmptyDataDecls
    EmptyDataDeriving
    ExistentialQuantification
    ExplicitForAll
    FlexibleContexts
    FlexibleInstances
    GADTSyntax
    GeneralisedNewtypeDeriving
    ImportQualifiedPost
    KindSignatures
    LambdaCase
    MultiParamTypeClasses
    MultiWayIf
    NumericUnderscores
    OverloadedStrings
    PolyKinds
    PostfixOperators
    RankNTypes
    ScopedTypeVariables
    StandaloneDeriving
    StandaloneKindSignatures
    TupleSections
    TypeApplications
    TypeFamilies
    TypeOperators
    ViewPatterns

library
  import:           extensions

  -- 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
    , constraints-extras
    , containers
    , data-default
    , dependent-sum
    , dependent-sum-template
    , directory
    , file-embed
    , filepath
    , filepattern
    , generic-optics
    , generics-sop
    , http-types
    , lvar
    , monad-logger
    , monad-logger-extras
    , mtl
    , neat-interpolation
    , optics-core
    , optparse-applicative
    , relude                  >=1.0
    , sop-core
    , template-haskell
    , text
    , unliftio
    , url-slug
    , wai
    , wai-middleware-static
    , wai-websockets
    , warp
    , websockets

  if flag(with-examples)
    build-depends:
      , blaze-html
      , blaze-markup
      , fsnotify
      , time

  if flag(with-extra)
    build-depends:
      , pandoc
      , pandoc-types
      , time
      , unionmount

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

  ghc-options:
    -Wall -Wincomplete-record-updates -Wincomplete-uni-patterns
    -Wmissing-deriving-strategies -Wunused-foralls -Wunused-foralls
    -fprint-explicit-foralls -fprint-explicit-kinds
    -fprint-potential-instances

  exposed-modules:
    Ema
    Ema.App
    Ema.Asset
    Ema.CLI
    Ema.Dynamic
    Ema.Generate
    Ema.Route.Class
    Ema.Route.Generic
    Ema.Route.Generic.RGeneric
    Ema.Route.Generic.SubModel
    Ema.Route.Generic.SubRoute
    Ema.Route.Generic.TH
    Ema.Route.Generic.Verification
    Ema.Route.Lib.File
    Ema.Route.Lib.Folder
    Ema.Route.Lib.Multi
    Ema.Route.Prism
    Ema.Route.Prism.Check
    Ema.Route.Prism.Type
    Ema.Route.Url
    Ema.Server
    Ema.Site

  other-modules:    GHC.TypeLits.Extra

  if flag(with-extra)
    exposed-modules:
      Ema.Route.Lib.Extra.PandocRoute
      Ema.Route.Lib.Extra.SlugRoute
      Ema.Route.Lib.Extra.StaticRoute

  if impl(ghc >=9.2)
    other-modules: GHC.TypeLits.Extra.Symbol

  if (flag(with-examples) && impl(ghc >=9.2))
    other-modules:
      Ema.Example.Common
      Ema.Example.Ex00_Hello
      Ema.Example.Ex01_Basic
      Ema.Example.Ex02_Clock
      Ema.Example.Ex03_Store
      Ema.Example.Ex04_Multi
      Ema.Example.Ex05_MultiRoute
      Ema.Route.Generic.Example

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

  if impl(ghc >=8.10)
    ghc-options: -Wunused-packages

test-suite test-type-errors
  import:           extensions
  build-depends:
    , base
    , ema
    , generics-sop
    , raw-strings-qq
    , template-haskell
    , text
    , url-slug

  other-modules:    Deriving
  type:             exitcode-stdio-1.0
  main-is:          Spec.hs
  hs-source-dirs:   test/type-errors
  default-language: Haskell2010

  if impl(ghc >=8.10)
    ghc-options: -Wunused-packages