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 -f markdown-smart -t man shellcheck.1.md -o shellcheck.1"
