Created
May 25, 2016 19:21
-
-
Save lspitzner/c363dbd5abcfe64bcd303264ac8b7d33 to your computer and use it in GitHub Desktop.
haskell/Cabal/Setup.hs for buildnumber module auto-generation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Distribution.Simple | |
import Distribution.PackageDescription | |
import Distribution.Simple.Program | |
import Distribution.Simple.Command | |
import Distribution.Simple.PreProcess | |
import Distribution.Simple.Setup | |
import Distribution.Simple.LocalBuildInfo | |
import Distribution.Simple.BuildPaths | |
import Distribution.Simple.BuildTarget | |
import System.Process | |
import System.Directory | |
import System.FilePath ( (</>), (<.>) ) | |
import System.Environment ( getArgs ) | |
main = do | |
let hooks = simpleUserHooks | |
{ instHook = \pkgdescr lbi userhooks instflags -> do | |
buildNoAction lbi | |
instHook simpleUserHooks pkgdescr lbi userhooks instflags | |
-- , buildHook = \pkgdescr lbi userhooks buildflags -> do | |
-- buildNoAction lbi | |
-- buildHook simpleUserHooks pkgdescr lbi userhooks buildflags | |
, postConf = \_args _confflags _pkgdescr lbi -> do | |
buildNoAction lbi | |
} | |
defaultMainWithHooks hooks | |
buildNoAction :: LocalBuildInfo | |
-> IO () | |
buildNoAction lbi = do | |
-- putStrLn "Generating build number file and module." | |
let dir = autogenModulesDir lbi | |
createDirectoryIfMissing True dir | |
let buildNoModulePath = dir </> "BuildNo_examplepackage.hs" | |
buildNo <- (read :: String -> Int) <$> readProcess "buildno" [] "" | |
writeFile buildNoModulePath | |
$ unlines | |
[ "module BuildNo_examplepackage" | |
, " ( buildNo" | |
, " )" | |
, "where" | |
, "" | |
, "" | |
, "" | |
, "import Prelude ( Int )" | |
, "" | |
, "" | |
, "" | |
, "buildNo :: Int" | |
, "buildNo = " ++ show buildNo | |
] | |
return () |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment