The wai-cli package

[Tags:library, public-domain]

Command line runner for Wai apps (using Warp) with support for UNIX domain sockets, TLS (can be turned off with a cabal flag to avoid compiling the TLS library), CGI, socket activation (systemd-compatible, but see https:github.commyfreewebsoad for a more interesting (and not linux-only) thing than what systemd does), and graceful shutdown (on TERM signal).


[Skip to Readme]

Properties

Versions 0.1.0, 0.1.1
Dependencies ansi-terminal, base (>=4.8.0.0 && <5), http-types, monads-tf, network, options, socket-activation, stm, streaming-commons, unix, wai, wai-extra, warp, warp-tls [details]
License PublicDomain
Copyright 2017 Greg V <greg@unrelenting.technology>
Author Greg V
Maintainer greg@unrelenting.technology
Category Web
Home page https://github.com/myfreeweb/wai-cli
Source repository head: git clone git://github.com/myfreeweb/wai-cli.git
Uploaded Mon Mar 27 18:26:51 UTC 2017 by myfreeweb
Distributions LTSHaskell:0.1.1, NixOS:0.1.1, Stackage:0.1.1, Tumbleweed:0.1.1
Downloads 96 total (5 in the last 30 days)
Votes
0 []
Status Docs available [build log]
Last success reported on 2017-03-27 [all 1 reports]
Hackage Matrix CI

Modules

[Index]

Flags

NameDescriptionDefaultType
tlsInclude warp-tlsEnabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for wai-cli

Readme for wai-cli-0.1.1

wai-cli Hackage Build Status unlicense

A command line runner for Wai apps (using Warp) with support for:

  • --protocol http --port 8000 TCP sockets
  • --protocol unix --socket /var/run/app/sock UNIX domain sockets
  • --protocol cgi running as a CGI app (the original serverless lambda functions from the 90s)
  • --protocol activate socket activation (systemd-compatible, but not restricted to systemd in any way. see soad for an interesting use of (de)activation!)
  • --protocol (http+tls|unix+tls|activate+tls) --tlskey key.pem --tlscert cert.pem TLS (can be turned off with a cabal flag to avoid compiling the TLS library)
  • --graceful (none|serve-normally|serve-503) graceful shutdown (on TERM signal)
  • --devlogging development logging (from wai-extra)
  • printing a pretty and colorful run message (e.g. Running on http port 3000 with 4 CPUs) (you can replace it with your own, or with nothing)

Extracted from sweetroll and microformats2-parser's demo web app.

Usage

Add a dependency on wai-cli and write something like this:

{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty
import Network.Wai.Cli
import Data.Monoid (mconcat)

app = scottyApp $ do
  get "/:word" $ do
    beam <- param "word"
    html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]

main = defWaiMain =<< app

Want to use command line args for your application-specific settings? Don't. Use environment variables instead. Possibly with dotenv to load some of them from a file. envy is a really awesome way to read them.

License

This is free and unencumbered software released into the public domain.
For more information, please refer to the UNLICENSE file or unlicense.org.