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.Simple
|
||||||
|
import Distribution.PackageDescription ( emptyHookedBuildInfo )
|
||||||
|
import Control.Exception ( bracket_ )
|
||||||
import System.Process ( runCommand, waitForProcess )
|
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})
|
main = defaultMainWithHooks (simpleUserHooks {runTests = runTestSuite, preConf = checkReferenceODT})
|
||||||
|
|
||||||
testDir = "tests"
|
|
||||||
|
|
||||||
|
-- | Run test suite.
|
||||||
runTestSuite _ _ _ _ = do
|
runTestSuite _ _ _ _ = do
|
||||||
setCurrentDirectory testDir
|
inDirectory "tests" $ runCommand "runhaskell RunTests.hs" >>= waitForProcess
|
||||||
runCommand "runhaskell RunTests.hs" >>= waitForProcess
|
|
||||||
return ()
|
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