diff options
author | John MacFarlane <jgm@berkeley.edu> | 2015-07-05 13:50:10 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2015-07-05 13:50:10 -0700 |
commit | f1103f8f69939fd70e358ac06c022306b6678afd (patch) | |
tree | 48043b35e1addec5e2f307bf6e1244f4c59b144f /Setup.hs | |
parent | 6e121bfafc24c7036b4993b1e514249842a02165 (diff) | |
download | pandoc-f1103f8f69939fd70e358ac06c022306b6678afd.tar.gz |
Make cabal require hsb2hs >= 0.3.1.
This is done by adding `hookedPrograms` in `Setup.hs`,
which allows us to include `hsb2hs` in Build-Tools in cabal.
Diffstat (limited to 'Setup.hs')
-rw-r--r-- | Setup.hs | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -23,18 +23,35 @@ import Distribution.PackageDescription (PackageDescription(..), FlagName(..)) import System.Process ( rawSystem ) import System.FilePath ( (</>) ) import System.Directory ( findExecutable ) +import Distribution.Verbosity ( Verbosity ) import Distribution.Simple.Utils (info, notice, installOrdinaryFiles) import Distribution.Simple.Setup +import Distribution.Simple.Program (simpleProgram, Program(..)) import Distribution.Simple.LocalBuildInfo +import Data.Version +import System.Process (readProcess) +import Text.ParserCombinators.ReadP (readP_to_S, skipSpaces, eof) import Control.Monad (when) main :: IO () main = defaultMainWithHooks $ simpleUserHooks { -- enable hsb2hs preprocessor for .hsb files hookedPreProcessors = [ppBlobSuffixHandler] + , hookedPrograms = [(simpleProgram "hsb2hs"){ + programFindVersion = findHsb2hsVersion }] , postCopy = installManPage } +findHsb2hsVersion :: Verbosity -> FilePath -> IO (Maybe Version) +findHsb2hsVersion verb fp = do + outp <- readProcess fp ["--version"] "" + case readP_to_S (do v <- parseVersion + skipSpaces + eof + return v) outp of + ((v,""):_) -> return (Just v) + _ -> return Nothing + ppBlobSuffixHandler :: PPSuffixHandler ppBlobSuffixHandler = ("hsb", \_ lbi -> PreProcessor { |