1
1
mirror of https://github.com/srid/ema.git synced 2024-11-29 09:25:14 +03:00

Prep for hackage release

This commit is contained in:
Sridhar Ratnakumar 2021-04-26 14:22:49 -04:00
parent 0f1ceb464f
commit e5d77e1e92
5 changed files with 13 additions and 37 deletions

View File

@ -1,5 +1,5 @@
# Revision history for ema # Revision history for ema
## 0.1.0.0 -- YYYY-mm-dd ## 0.1.0.0 -- 2021-04-26
* First version. Released on an unsuspecting world. * First version. Released on an unsuspecting world.

View File

@ -17,27 +17,3 @@ main = do
## Hacking ## Hacking
Run `bin/run` (or <kbd>Ctrl+Shift+B</kbd> in VSCode). This runs the documentation example; modify `./.ghcid` to run a different example, such as the clock example - which updates every second, demonstrating hot reload. Run `bin/run` (or <kbd>Ctrl+Shift+B</kbd> in VSCode). This runs the documentation example; modify `./.ghcid` to run a different example, such as the clock example - which updates every second, demonstrating hot reload.
## TODO
- [x] MVP
- [x] Implement hot reload, and ditch browser-sync
- [x] server to client refresh
- [x] client to server reconnect (on ghcid reload, or accidental client disconnect)
- [x] or, investigate https://hackage.haskell.org/package/ghci-websockets
- [x] Multi-websocket-client support
- [x] Static site generation mode
- [x] add common examples,
- [x] filesystem watcher
- [x] docs site for self (w/ breadcrumbs and possibly even search)
pre-announce,
- CLI UX
- [x] opts
- [x] logging
- Expose it to apps (inc/ helpers) in a simple way
- [x] [deal with errors](https://github.com/srid/memoir/issues/1)
- [x] How to serve non-generated files (css, img, etc.)
- [ ] Publish Data.LVar to Hackage
- [ ] documentation ([guide](https://documentation.divio.com/))
- [x] Avoid tailwind CDN in docs (use twind or windicss) for better lighthouse score

View File

@ -7,6 +7,8 @@ TODO
- Any Haskell type - Any Haskell type
- Stored in `LVar` to enable hot-reload - Stored in `LVar` to enable hot-reload
- `LVar.set` and `LVar.modify` - `LVar.set` and `LVar.modify`
- When the program starts up, set the initial value
- Over time, use LVar.modify (or LVar.set) to update it based on changes (eg: filesystem)
- `runEma` - `runEma`
{.last} {.last}

View File

@ -6,7 +6,15 @@ copyright: 2021 Sridhar Ratnakumar
maintainer: srid@srid.ca maintainer: srid@srid.ca
author: Sridhar Ratnakumar author: Sridhar Ratnakumar
category: Web 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.
flag with-examples flag with-examples
description: Include examples and their dependencies description: Include examples and their dependencies
default: True default: True
@ -15,15 +23,6 @@ flag with-helpers
description: Include helper modules based on blaze-html description: Include helper modules based on blaze-html
default: True default: True
-- A short (one-line) description of the package.
-- synopsis:
-- A longer description of the package.
-- description:
-- A URL where users can report bugs.
-- bug-reports:
extra-source-files: extra-source-files:
CHANGELOG.md CHANGELOG.md
LICENSE LICENSE
@ -38,7 +37,7 @@ library
build-depends: build-depends:
, aeson , aeson
, async , async
, base ^>=4.14.1.0 , base >=4.13.0.0 && <=4.17.0.0
, containers , containers
, data-default , data-default
, directory , directory

View File

@ -14,7 +14,6 @@ where
import Control.Concurrent (threadDelay) import Control.Concurrent (threadDelay)
import Control.Exception (finally) import Control.Exception (finally)
import Control.Monad.Logger import Control.Monad.Logger
import Ema.App (MonadEma)
import System.Directory (canonicalizePath) import System.Directory (canonicalizePath)
import System.FSNotify import System.FSNotify
( ActionPredicate, ( ActionPredicate,