gl-0.1: Setup.hs
{-# OPTIONS_GHC -Wall #-}
-----------------------------------------------------------------------------
-- |
-- Copyright : (C) 2014 Edward Kmett and Gabríel Arthúr Pétursson
-- License : BSD-style (see the file LICENSE)
-- Maintainer : Edward Kmett <ekmett@gmail.com>
-- Stability : experimental
-- Portability : portable
--
--
-- Loaded by cabal to configure the project.
--
-- Local hooks are provided to generate the API on build, producing haddocks and to enable @cabal sdist@
----------------------------------------------------------------------------
import Distribution.Simple
import Distribution.Simple.LocalBuildInfo
import Distribution.PackageDescription
import System.FilePath
import Generator (generateSource)
import Parser (parseFile)
import Registry (deshenaniganize)
generateAPI :: LocalBuildInfo -> IO ()
generateAPI l = do
registry <- parseFile "gl.xml"
putStr "Generating API..."
generateSource (buildDir l </> "autogen") (deshenaniganize registry)
putStrLn "done"
main :: IO ()
main = defaultMainWithHooks simpleUserHooks
{ buildHook = \p l h f -> generateAPI l >> buildHook simpleUserHooks p l h f
, haddockHook = \p l h f -> generateAPI l >> haddockHook simpleUserHooks p l h f
, sDistHook = \p ml h f -> case ml of
Nothing -> fail "No local buildinfo available. configure first"
Just l -> do
let editlib lib = lib { libBuildInfo = editBuildInfo (libBuildInfo lib) }
editBuildInfo bi = bi { hsSourceDirs = (buildDir l </> "autogen") : hsSourceDirs bi }
p' = p { library = fmap editlib (library p) }
generateAPI l >> sDistHook simpleUserHooks p' ml h f
}