packages feed

mathblog-0.2: src/MB/Gladtex.hs

module MB.Gladtex
    ( gladTex
    , checkForGladtex
    )
where
import System.Exit
    ( ExitCode(..)
    , exitFailure
    )
import System.Process
    ( readProcessWithExitCode
    )
import Control.Monad
    ( when
    )
import MB.Types

gladtexProgName :: String
gladtexProgName = "gladtex"

gladTex :: Config -> FilePath -> String -> IO ()
gladTex config htexPath color = do
  let args = [ "-d"
             , imageDir config
             , "-u"
             , baseUrl config ++ "/generated-images/"
             , "-r"
             , "120"
             , "-b"
             , "FFFFFF"
             , "-c"
             , color
             , htexPath
             ]

  (ecode, _, err) <- readProcessWithExitCode gladtexProgName args ""

  when (ecode /= ExitSuccess) $ do
    putStrLn $ "Error processing " ++ (show htexPath) ++ " with " ++ gladtexProgName ++ ":"
    putStrLn err
    exitFailure

checkForGladtex :: IO ()
checkForGladtex = do
  (code, _, _) <- readProcessWithExitCode gladtexProgName [] ""
  case code of
    (ExitFailure c) ->
        do
          putStrLn $ "This program requires '" ++ gladtexProgName ++
                       "'; I attempted to run it but " ++
                       "got exit status " ++ (show c)
          exitFailure
    _ -> return ()