module Main (main) where
import Distribution.Simple
import Distribution.Simple.PreProcess
import Distribution.Simple.Program
import Distribution.Simple.LocalBuildInfo
import Distribution.PackageDescription
import System.FilePath
import Debug.Trace
main :: IO ()
main = defaultMainWithHooks (simpleUserHooks { hookedPreProcessors = [("fl", ppFluidToHaskell)] })
fluidToHaskellProgram :: Program
fluidToHaskellProgram =
(simpleProgram "fltkhs-fluidtohs") { programFindVersion = (\_ _ -> return Nothing) }
ppFluidToHaskell :: BuildInfo -> LocalBuildInfo -> PreProcessor
ppFluidToHaskell bi lbi =
PreProcessor
{ platformIndependent = True
, runPreProcessor = \(inBaseDir, inRelativeFile) (outBaseDir, outRelativeFile) verbosity -> do
(fluidToHaskellProg, _) <- requireProgram verbosity fluidToHaskellProgram (withPrograms lbi)
rawSystemProgram verbosity fluidToHaskellProg
["--output-dir=" ++ outBaseDir, inBaseDir </> inRelativeFile]
}