diff options
Diffstat (limited to 'Build')
-rw-r--r-- | Build/Mans.hs | 58 | ||||
-rwxr-xr-x | Build/mdwn2man | 2 |
2 files changed, 58 insertions, 2 deletions
diff --git a/Build/Mans.hs b/Build/Mans.hs new file mode 100644 index 000000000..a50396e5e --- /dev/null +++ b/Build/Mans.hs @@ -0,0 +1,58 @@ +{- Build man pages. + - + - Copyright 2016 Joey Hess <id@joeyh.name> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +{-# OPTIONS_GHC -fno-warn-tabs #-} + +module Build.Mans where + +import System.Directory +import System.FilePath +import Data.List +import Control.Monad +import System.Process +import System.Exit +import Data.Maybe +import Utility.Exception + +main :: IO () +main = do + mans <- buildMans + when (any isNothing mans) $ + error "mdwn2man failed" + +buildMans :: IO [Maybe FilePath] +buildMans = do + mansrc <- filter isManSrc <$> getDirectoryContents "doc" + createDirectoryIfMissing False "man" + forM mansrc $ \f -> do + let src = "doc" </> f + let dest = srcToDest src + srcm <- getModificationTime src + destm <- catchMaybeIO $ getModificationTime dest + if (Just srcm > destm) + then do + r <- system $ unwords + [ "./Build/mdwn2man" + , progName src + , "1" + , src + , "> " ++ dest + ] + if r == ExitSuccess + then return (Just dest) + else return Nothing + else return (Just dest) + +isManSrc :: FilePath -> Bool +isManSrc s = "git-annex" `isPrefixOf` (takeFileName s) + && takeExtension s == ".mdwn" + +srcToDest :: FilePath -> FilePath +srcToDest s = "man" </> progName s ++ ".1" + +progName :: FilePath -> FilePath +progName = dropExtension . takeFileName diff --git a/Build/mdwn2man b/Build/mdwn2man index f56d9b0c7..09b684a07 100755 --- a/Build/mdwn2man +++ b/Build/mdwn2man @@ -2,8 +2,6 @@ # Warning: hack my $prog=shift; -$prog=~s/\.\d+$//; -$prog=~s/man\///; my $section=shift; print ".TH $prog $section\n"; |