shithub: MicroHs

ref: c101325aaf8ed0ec3c8c4ff4b7d425bba799825a
dir: /lib/System/Info.hs/

View raw version
module System.Info(os, arch, compilerName, compilerVersion, fullCompilerVersion) where
import Control.Monad
import Data.Char
import Data.Version(Version(..))
import System.Cmd
import System.Directory
import System.Exit
import System.IO
import System.IO.Unsafe

os :: String
os = if _isWindows then "windows" else uname "-s"

arch :: String
arch = if _isWindows then "x86_64" else uname "-m"

compilerName :: String
compilerName = "mhs"

compilerVersion :: Version
compilerVersion = Version [0,9]

fullCompilerVersion :: Version
fullCompilerVersion = Version [0,9,0]

-- Assume the system has an uname command
uname :: String -> String
uname flag = unsafePerformIO $ do
  (fn, h) <- openTmpFile "uname"
  hClose h
  rc <- system $ "uname " ++ flag ++ " >" ++ fn
  res <- readFile fn
  removeFile fn
  when (rc /= ExitSuccess) $
    error $ "System.Into: uname failed"
  return $ map toLower $ filter (not . isSpace) res