starter-0.1.0: Develop applications without restarts

Copyright(c) Raghu Kaippully 2018
LicenseMPL-2.0
Maintainerrkaippully@gmail.com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Starter

Description

Server side software development usually needs frequent restarts. You would launch a server, make code changes, recompile the code, and then restart the server. Starter attempts to automate this tedious cycle.

How does it work?

Starter is a library that you link to your program. With a few simple steps, you can set up a GHCi session that automatically reloads your program whenever your source code changes.

  1. In some module of your program (e.g. MyModule), define a variable mySettings of type StarterSettings.
  2. Create a .ghci file in your project with the following contents:
    :load MyModule Starter
    :def! starter runStarter mySettings
    
  1. Now you can start your program with the :starter command. This will run your program under a monitor. When the source code changes, the monitor will interrupt the program with an exception, reload the modules with a :reload command and restart the program.
  2. You can terminate the session with a Ctrl+C.

Synopsis

Documentation

data StarterSettings Source #

Constructors

StarterSettings 

Fields

defaultStarterSettings :: StarterSettings Source #

Default StarterSettings that uses ":starter" as the GHCi command and restarts on all file changes.

runStarter :: StarterSettings -> String -> IO String Source #

Run a program under a monitor for source code changes. The StarterSettings argument contains details about what needs to be run and how the monitor behaves. The second argument is the command line passed to the GHCi command from the GHCi session. For e.g, if you start the program with:

:starter foo bar

then "foo bar" will be passed as the second argument to runStarter.