module Idris.Info.Show where

import Idris.Info

import System.Exit

showIdrisCRTSDir :: IO ()
showIdrisCRTSDir :: IO ()
showIdrisCRTSDir = do
  String
ldir <- IO String
getIdrisCRTSDir
  String -> IO ()
putStrLn String
ldir

showExitIdrisCRTSDir :: IO ()
showExitIdrisCRTSDir :: IO ()
showExitIdrisCRTSDir = do
  IO ()
showIdrisCRTSDir
  IO ()
forall a. IO a
exitSuccess

showIdrisJSRTSDir :: IO ()
showIdrisJSRTSDir :: IO ()
showIdrisJSRTSDir = do
  String
ldir <- IO String
getIdrisJSRTSDir
  String -> IO ()
putStrLn String
ldir

showExitIdrisJSRTSDir :: IO ()
showExitIdrisJSRTSDir :: IO ()
showExitIdrisJSRTSDir = do
  IO ()
showIdrisJSRTSDir
  IO ()
forall a. IO a
exitSuccess

showIdrisFlagsLibs :: IO ()
showIdrisFlagsLibs :: IO ()
showIdrisFlagsLibs = do
  [String]
libFlags <- IO [String]
getIdrisFlagsLib
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords [String]
libFlags

showExitIdrisFlagsLibs :: IO ()
showExitIdrisFlagsLibs :: IO ()
showExitIdrisFlagsLibs = do
  IO ()
showIdrisFlagsLibs
  IO ()
forall a. IO a
exitSuccess

showIdrisDataDir :: IO ()
showIdrisDataDir :: IO ()
showIdrisDataDir = do
  String
ldir <- IO String
getIdrisDataDir
  String -> IO ()
putStrLn String
ldir

showExitIdrisDataDir :: IO ()
showExitIdrisDataDir :: IO ()
showExitIdrisDataDir = do
  IO ()
showIdrisDataDir
  IO ()
forall a. IO a
exitSuccess

showIdrisLibDir :: IO ()
showIdrisLibDir :: IO ()
showIdrisLibDir = do
  String
ldir <- IO String
getIdrisLibDir
  String -> IO ()
putStrLn String
ldir

showExitIdrisLibDir :: IO ()
showExitIdrisLibDir :: IO ()
showExitIdrisLibDir = do
  IO ()
showIdrisLibDir
  IO ()
forall a. IO a
exitSuccess

showIdrisDocDir :: IO ()
showIdrisDocDir :: IO ()
showIdrisDocDir = do
  String
ldir <- IO String
getIdrisDocDir
  String -> IO ()
putStrLn String
ldir

showExitIdrisDocDir :: IO ()
showExitIdrisDocDir :: IO ()
showExitIdrisDocDir = do
  IO ()
showIdrisDocDir
  IO ()
forall a. IO a
exitSuccess

showIdrisFlagsInc :: IO ()
showIdrisFlagsInc :: IO ()
showIdrisFlagsInc = do
  [String]
incFlags <- IO [String]
getIdrisFlagsInc
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords [String]
incFlags

showExitIdrisFlagsInc :: IO ()
showExitIdrisFlagsInc :: IO ()
showExitIdrisFlagsInc = do
  IO ()
showIdrisFlagsInc
  IO ()
forall a. IO a
exitSuccess

-- | List idris packages installed
showIdrisInstalledPackages :: IO ()
showIdrisInstalledPackages :: IO ()
showIdrisInstalledPackages = do
  [String]
ipkgs <- IO [String]
getIdrisInstalledPackages
  (String -> IO ()) -> [String] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ String -> IO ()
putStrLn [String]
ipkgs

showExitIdrisInstalledPackages :: IO ()
showExitIdrisInstalledPackages :: IO ()
showExitIdrisInstalledPackages = do
  IO ()
showIdrisInstalledPackages
  IO ()
forall a. IO a
exitSuccess

showIdrisLoggingCategories :: IO ()
showIdrisLoggingCategories :: IO ()
showIdrisLoggingCategories = do
  [String]
cs <- IO [String]
getIdrisLoggingCategories
  (String -> IO ()) -> [String] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ String -> IO ()
putStrLn [String]
cs

showExitIdrisLoggingCategories :: IO ()
showExitIdrisLoggingCategories :: IO ()
showExitIdrisLoggingCategories = do
  IO ()
showIdrisLoggingCategories
  IO ()
forall a. IO a
exitSuccess

showIdrisInfo :: IO ()
showIdrisInfo :: IO ()
showIdrisInfo = do
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords [String
"Idris", String
getIdrisVersion]

  [String]
ps <- IO [String]
getIdrisInstalledPackages
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords ([String
"Installed Packages:"] [String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++ [String]
ps)

  [String]
cs <- IO [String]
getIdrisLoggingCategories
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords ([String
"Logging Categories:"] [String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++ [String]
cs)

  String -> IO ()
putStrLn String
"Paths:"
  String
ldir <- IO String
getIdrisLibDir
  String
udir <- IO String
getIdrisUserDataDir
  String
ddir <- IO String
getIdrisDocDir
  String
idir <- IO String
getIdrisDataDir
  String
crdir <- IO String
getIdrisCRTSDir
  String
jrdir <- IO String
getIdrisJSRTSDir
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords [String
"-", String
"Data Dir:", String
idir]
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords [String
"-", String
"Library Dir:", String
ldir]
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords [String
"-", String
"C RTS Dir:", String
crdir]
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords [String
"-", String
"JS RTS Dir:", String
jrdir]
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords [String
"-", String
"User Dir:",    String
udir]
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords [String
"-", String
"Documentation Dir:", String
ddir]

  String -> IO ()
putStrLn String
"Flags:"
  [String]
lflag <- IO [String]
getIdrisFlagsLib
  [String]
iflag <- IO [String]
getIdrisFlagsInc
  [String]
eflag <- IO [String]
getIdrisFlagsEnv
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords ([String
"-", String
"Libraries:", [String] -> String
forall a. Show a => a -> String
show [String]
lflag])
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords ([String
"-", String
"Includes:",  [String] -> String
forall a. Show a => a -> String
show [String]
iflag])
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords ([String
"-", String
"Env:",       [String] -> String
forall a. Show a => a -> String
show [String]
eflag])

  String
cc <- IO String
getIdrisCC
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords [String
"CC:", String
cc]

  String -> IO ()
putStrLn String
"Files:"
  String
hfile   <- IO String
getIdrisHistoryFile
  String
iscript <- IO String
getIdrisInitScript
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords ([String
"-", String
"History File:",    String
hfile])
  String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unwords ([String
"-", String
"REPL Init Script", String
iscript])


showExitIdrisInfo :: IO ()
showExitIdrisInfo :: IO ()
showExitIdrisInfo = do
  IO ()
showIdrisInfo
  IO ()
forall a. IO a
exitSuccess