leksah-server-0.13.1.0: src/IDE/Utils/VersionUtils.hs
{-# LANGUAGE ScopedTypeVariables, BangPatterns #-}
-----------------------------------------------------------------------------
--
-- Module : IDE.Utils.VersionUtils
-- Copyright : 2007-2011 Juergen Nicklisch-Franken, Hamish Mackenzie
-- License : GPL Nothing
--
-- Maintainer : maintainer@leksah.org
-- Stability : provisional
-- Portability :
--
-- |
--
-----------------------------------------------------------------------------
module IDE.Utils.VersionUtils (
getHaddockVersion
, getGhcVersion
, getGhcInfo
) where
import IDE.Utils.Tool (toolline, runTool')
import Data.Char (ord)
import System.Log.Logger (debugM)
import Control.Exception as E (SomeException, catch)
import qualified Data.Text as T (unlines, unpack, init, last)
getGhcVersion :: IO FilePath
getGhcVersion = E.catch (do
(!output,_) <- runTool' "ghc" ["--numeric-version"] Nothing
let vers = toolline $ head output
vers2 = if ord (T.last vers) == 13
then T.init vers
else vers
debugM "leksah-server" $ "Got GHC Version " ++ T.unpack vers2
return $ T.unpack vers2
) $ \ (_ :: SomeException) -> error ("FileUtils>>getGhcVersion failed")
getGhcInfo :: IO String
getGhcInfo = E.catch (do
(!output,_) <- runTool' "ghc" ["--info"] Nothing
return . T.unpack . T.unlines $ map toolline output
) $ \ (_ :: SomeException) -> error ("FileUtils>>getGhcInfo failed")
getHaddockVersion :: IO String
getHaddockVersion = E.catch (do
(!output,_) <- runTool' "haddock" ["--version"] Nothing
let vers = toolline $ head output
vers2 = if ord (T.last vers) == 13
then T.init vers
else vers
return $ T.unpack vers2
) $ \ (_ :: SomeException) -> error ("FileUtils>>getHaddockVersion failed")