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
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
Stability Unknown
Category Web
Home page https://github.com/myfreeweb/wai-cli
Source repository head: git clone git://github.com/myfreeweb/wai-cli.git
Uploaded Mon Jan 23 21:45:14 UTC 2017 by myfreeweb
Distributions NixOS:0.1.0
Downloads 24 total (6 in the last 30 days)
Votes
0 []
Status Docs available [build log]
Last success reported on 2017-01-23 [all 1 reports]

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.0

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 / wai-cli'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.)

License

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