packages feed

hs-0.1.0.0: src/HS.hs

{-# 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


-- | run an @hs@ command
hs :: CLI -> IO ()
hs cli =
  case cli of
    CLI_version               -> fmtLn $ ""+|showVersion version|+""
    CLI_whereis    imd cp     -> ld $ \cfg -> cmdWhereis cfg imd cp
    CLI_run        imd cp as  -> ld $ \cfg -> cmdRun     cfg imd cp as
    CLI_list           cp     -> ld $ \cfg -> cmdList    cfg     cp
    CLI_use            is     -> ld $ \cfg -> cmdUse     cfg     is
    CLI_use_install_mode  imd -> ld $ \cfg -> cmdUseIM   cfg     imd
    CLI_use_compiler      cpv -> ld $ \cfg -> cmdUseCp   cfg     cpv
    CLI_dump_ghc_wrappers imd -> ld $ \cfg -> cmdDump    cfg     imd
  where
    ld :: (Cfg -> IO ()) -> IO ()
    ld cmd = cmd =<< loadCfg