Added preconfigure hook to build reference.odt if missing.
git-svn-id: https://pandoc.googlecode.com/svn/trunk@1386 788f1e2b-df1e-0410-8736-df70ead52e1b
This commit is contained in:
parent
5d3d2d79b3
commit
db729a08c8
1 changed files with 41 additions and 6 deletions
47
Setup.hs
47
Setup.hs
|
@ -1,13 +1,48 @@
|
|||
import Distribution.Simple
|
||||
import Distribution.PackageDescription ( emptyHookedBuildInfo )
|
||||
import Control.Exception ( bracket_ )
|
||||
import System.Process ( runCommand, waitForProcess )
|
||||
import System.Directory ( setCurrentDirectory )
|
||||
import System.FilePath ( (</>) )
|
||||
import System.Directory ( getCurrentDirectory, setCurrentDirectory, findExecutable, doesFileExist )
|
||||
import System.IO ( stderr )
|
||||
import System.Exit
|
||||
import Data.Maybe ( fromJust )
|
||||
|
||||
main = defaultMainWithHooks (simpleUserHooks {runTests = runTestSuite})
|
||||
|
||||
testDir = "tests"
|
||||
main = defaultMainWithHooks (simpleUserHooks {runTests = runTestSuite, preConf = checkReferenceODT})
|
||||
|
||||
-- | Run test suite.
|
||||
runTestSuite _ _ _ _ = do
|
||||
setCurrentDirectory testDir
|
||||
runCommand "runhaskell RunTests.hs" >>= waitForProcess
|
||||
inDirectory "tests" $ runCommand "runhaskell RunTests.hs" >>= waitForProcess
|
||||
return ()
|
||||
|
||||
-- | If reference.odt does not exist, build it.
|
||||
checkReferenceODT _ _ = do
|
||||
refODTexists <- doesFileExist ("odt-styles" </> "reference.odt")
|
||||
if refODTexists
|
||||
then return ()
|
||||
else makeReferenceODT
|
||||
return emptyHookedBuildInfo
|
||||
|
||||
-- | Create reference.odt by zipping up sources in odt-styles directory.
|
||||
makeReferenceODT :: IO ()
|
||||
makeReferenceODT = do
|
||||
zipPathMaybe <- findExecutable "zip"
|
||||
if zipPathMaybe == Nothing
|
||||
then error $ "The 'zip' command, which is needed to build reference.odt\n" ++
|
||||
"from sources in the odt-styles directory, was not found.\n" ++
|
||||
"Try again after installing zip (http://www.info-zip.org/Zip.html).\n" ++
|
||||
"Or use the pandoc source tarball, which contains a prebuilt reference.odt."
|
||||
else do
|
||||
putStrLn "Creating reference.odt:"
|
||||
inDirectory "odt-styles" $ do
|
||||
ec <- runCommand "zip -9 -r reference.odt *" >>= waitForProcess
|
||||
case ec of
|
||||
ExitSuccess -> putStrLn "Done."
|
||||
_ -> error "Error creating ODT."
|
||||
|
||||
-- | Perform an IO action in a directory.
|
||||
inDirectory :: FilePath -> IO a -> IO a
|
||||
inDirectory dir action = do
|
||||
oldDir <- getCurrentDirectory
|
||||
bracket_ (setCurrentDirectory dir) (setCurrentDirectory oldDir) action
|
||||
|
||||
|
|
Loading…
Reference in a new issue