rattle-0.2: src/Development/Rattle.hs
-- | General rules for writing consistent rattle build systems:
--
-- * Never write to the same file twice. Never read then write.
--
-- * Don't delete files that have been produced. Each command should make
-- new files, not delete old files.
module Development.Rattle(
rattleRun, Run,
rattleDump,
Hazard,
RattleOptions(..), rattleOptions, RattleUI(..),
cmd, CmdOption(..), CmdOption2(..), toCmdOption,
module Development.Rattle.Derived,
module Development.Rattle.Program,
liftIO, writeProfile, graphData
) where
import Control.Monad.Trans.Reader
import Control.Monad.IO.Class
import Development.Shake.Command
import Development.Rattle.Server
import Development.Rattle.Derived
import Development.Rattle.Options
import Development.Rattle.CmdOption
import Development.Rattle.Shared
import Development.Rattle.Hazards
import Development.Rattle.Profile
import Development.Rattle.Program
-- | Given an Action to run, and a list of previous commands that got run, run it again
rattleRun :: RattleOptions -> Run a -> IO a
rattleRun opts (Run act) = withRattle opts $ \r ->
runReaderT act r
-- | Dunmp the contents of a shared cache
rattleDump :: (String -> IO ()) -> FilePath -> IO ()
rattleDump = dump