diff options
author | fiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> | 2010-01-12 07:02:30 +0000 |
---|---|---|
committer | fiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> | 2010-01-12 07:02:30 +0000 |
commit | 48c240de2d5ca24f844d17a426b509bfc13e877c (patch) | |
tree | b5ff61e5f53f3c59c5fd4765efb2a5b1452e82be | |
parent | abd73635a140365720b18b15dd0dde3e048f2efc (diff) |
Setup.hs: install manpages to mandir.
Code borrowed from darcs.
git-svn-id: https://pandoc.googlecode.com/svn/trunk@1806 788f1e2b-df1e-0410-8736-df70ead52e1b
-rw-r--r-- | Setup.hs | 37 |
1 files changed, 33 insertions, 4 deletions
@@ -1,4 +1,12 @@ import Distribution.Simple +import Distribution.Simple.Setup + (copyDest, copyVerbosity, fromFlag, installVerbosity) +import Distribution.PackageDescription ( PackageDescription ) +import Distribution.Simple.LocalBuildInfo + ( LocalBuildInfo(..), absoluteInstallDirs ) +import Distribution.Verbosity ( Verbosity ) +import Distribution.Simple.InstallDirs (mandir, CopyDest (NoCopyDest)) +import Distribution.Simple.Utils (copyFiles) import Control.Exception ( bracket_ ) import Control.Monad ( unless ) import System.Process ( runCommand, runProcess, waitForProcess ) @@ -12,8 +20,15 @@ import Data.Maybe ( fromJust, isNothing, catMaybes ) import Data.List ( isInfixOf ) main = do - defaultMainWithHooks $ simpleUserHooks { runTests = runTestSuite - , postBuild = makeManPages } + defaultMainWithHooks $ simpleUserHooks { + runTests = runTestSuite + , postBuild = makeManPages + , postCopy = \ _ flags pkg lbi -> installManpages pkg lbi + (fromFlag $ copyVerbosity flags) + (fromFlag $ copyDest flags) + , postInst = \ _ flags pkg lbi -> installManpages pkg lbi + (fromFlag $ installVerbosity flags) NoCopyDest + } exitWith ExitSuccess -- | Run test suite. @@ -29,11 +44,16 @@ runTestSuite _ _ _ _ = do -- | Build man pages from markdown sources in man/man1/. makeManPages _ _ _ _ = do - mapM_ makeManPage ["pandoc.1", "hsmarkdown.1", "html2markdown.1", "markdown2pdf.1"] + mapM_ makeManPage manpages + +manpages :: [FilePath] +manpages = ["pandoc.1", "hsmarkdown.1", "html2markdown.1", "markdown2pdf.1"] + +manDir :: FilePath +manDir = "man" </> "man1" -- | Build a man page from markdown source in man/man1. makeManPage manpage = do - let manDir = "man" </> "man1" let pandoc = "dist" </> "build" </> "pandoc" </> "pandoc" let page = manDir </> manpage let source = manDir </> manpage <.> "md" @@ -47,6 +67,15 @@ makeManPage manpage = do _ -> do putStrLn $ "Error creating " ++ manDir </> manpage exitWith ec +installManpages pkg lbi verbosity copy = + mapM_ (installManpage pkg lbi verbosity copy) manpages + +installManpage :: PackageDescription -> LocalBuildInfo + -> Verbosity -> CopyDest -> FilePath -> IO () +installManpage pkg lbi verbosity copy manpage = + copyFiles verbosity (mandir (absoluteInstallDirs pkg lbi copy) </> "man1") + (zip (repeat manDir) manpages) + -- | Returns a list of 'dependencies' that have been modified after 'file'. modifiedDependencies :: FilePath -> [FilePath] -> IO [FilePath] modifiedDependencies file dependencies = do |