| import Distribution.PackageDescription ( |
| HookedBuildInfo, |
| emptyHookedBuildInfo ) |
| import Distribution.Simple ( |
| Args, |
| UserHooks ( preSDist ), |
| defaultMainWithHooks, |
| simpleUserHooks ) |
| import Distribution.Simple.Setup ( SDistFlags ) |
| |
| import System.Process ( system ) |
| |
| |
| main = defaultMainWithHooks myHooks |
| where |
| myHooks = simpleUserHooks { preSDist = myPreSDist } |
| |
| -- | This hook will be executed before e.g. @cabal sdist@. It runs |
| -- pandoc to create the man page from shellcheck.1.md. If the pandoc |
| -- command is not found, this will fail with an error message: |
| -- |
| -- /bin/sh: pandoc: command not found |
| -- |
| -- Since the man page is listed in the Extra-Source-Files section of |
| -- our cabal file, a failure here should result in a failure to |
| -- create the distribution tarball (that's a good thing). |
| -- |
| myPreSDist :: Args -> SDistFlags -> IO HookedBuildInfo |
| myPreSDist _ _ = do |
| putStrLn "Building the man page (shellcheck.1) with pandoc..." |
| putStrLn pandoc_cmd |
| result <- system pandoc_cmd |
| putStrLn $ "pandoc exited with " ++ show result |
| return emptyHookedBuildInfo |
| where |
| pandoc_cmd = "pandoc -s -t man shellcheck.1.md -o shellcheck.1" |