summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-05-31 13:58:13 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-05-31 13:58:13 -0400
commit555bd5d6b8f805cf5921bb67466c632c9db005e9 (patch)
tree09d3f39006e35f0bbeb9c8959470efcef2e7f6f6 /Build
parenta209897585b11bb93c2d56fab65a3b09e242d341 (diff)
Remove Makefile from cabal tarball; man page building is now handled by a small haskell program.
This actually runs faster than building the man pages from the makefile did. But the main purpose is to let Setup.hs import Build.Mans and so not need the makefile.
Diffstat (limited to 'Build')
-rw-r--r--Build/Mans.hs58
-rwxr-xr-xBuild/mdwn2man2
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";