{-# LANGUAGE OverloadedStrings #-}
module HS
( hs
, module HS.CLI.CLI
) where
import Data.Version
import Fmt
import HS.Cfg
import HS.CLI
import HS.CLI.CLI
import HS.Cmd
import Paths_hs
hs :: CLI -> IO ()
hs :: CLI -> IO ()
hs CLI
cli =
case CLI
cli of
CLI
CLI_version -> Builder -> IO ()
forall b. FromBuilder b => Builder -> b
fmtLn (Builder -> IO ()) -> Builder -> IO ()
forall a b. (a -> b) -> a -> b
$ Builder
""Builder -> Builder -> Builder
forall b. FromBuilder b => Builder -> Builder -> b
+|Version -> String
showVersion Version
versionString -> Builder -> Builder
forall a b. (Buildable a, FromBuilder b) => a -> Builder -> b
|+Builder
""
CLI_whereis Maybe InstallMode
imd Compiler
cp -> (Cfg -> IO ()) -> IO ()
ld ((Cfg -> IO ()) -> IO ()) -> (Cfg -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Cfg
cfg -> Cfg -> Maybe InstallMode -> Compiler -> IO ()
cmdWhereis Cfg
cfg Maybe InstallMode
imd Compiler
cp
CLI_run Maybe InstallMode
imd Tool
cp ToolArgs
as -> (Cfg -> IO ()) -> IO ()
ld ((Cfg -> IO ()) -> IO ()) -> (Cfg -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Cfg
cfg -> Cfg -> Maybe InstallMode -> Tool -> ToolArgs -> IO ()
cmdRun Cfg
cfg Maybe InstallMode
imd Tool
cp ToolArgs
as
CLI_list Maybe Compiler
cp -> (Cfg -> IO ()) -> IO ()
ld ((Cfg -> IO ()) -> IO ()) -> (Cfg -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Cfg
cfg -> Cfg -> Maybe Compiler -> IO ()
cmdList Cfg
cfg Maybe Compiler
cp
CLI_use [Manager]
is -> (Cfg -> IO ()) -> IO ()
ld ((Cfg -> IO ()) -> IO ()) -> (Cfg -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Cfg
cfg -> Cfg -> [Manager] -> IO ()
cmdUse Cfg
cfg [Manager]
is
CLI_use_install_mode Maybe InstallMode
imd -> (Cfg -> IO ()) -> IO ()
ld ((Cfg -> IO ()) -> IO ()) -> (Cfg -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Cfg
cfg -> Cfg -> Maybe InstallMode -> IO ()
cmdUseIM Cfg
cfg Maybe InstallMode
imd
CLI_use_compiler Maybe CompilerVersion
cpv -> (Cfg -> IO ()) -> IO ()
ld ((Cfg -> IO ()) -> IO ()) -> (Cfg -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Cfg
cfg -> Cfg -> Maybe CompilerVersion -> IO ()
cmdUseCp Cfg
cfg Maybe CompilerVersion
cpv
CLI_dump_ghc_wrappers Maybe InstallMode
imd -> (Cfg -> IO ()) -> IO ()
ld ((Cfg -> IO ()) -> IO ()) -> (Cfg -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Cfg
cfg -> Cfg -> Maybe InstallMode -> IO ()
cmdDump Cfg
cfg Maybe InstallMode
imd
where
ld :: (Cfg -> IO ()) -> IO ()
ld :: (Cfg -> IO ()) -> IO ()
ld Cfg -> IO ()
cmd = Cfg -> IO ()
cmd (Cfg -> IO ()) -> IO Cfg -> IO ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< IO Cfg
loadCfg