hix-0.4.0.0: lib/Hix/Env.hs
module Hix.Env where
import qualified Data.Text.IO as Text
import Hix.Component (targetComponent)
import qualified Hix.Data.ComponentConfig
import Hix.Data.ComponentConfig (EnvRunner (EnvRunner), PackagesConfig, Target (Target))
import Hix.Data.Error (pathText)
import qualified Hix.Data.GhciConfig
import Hix.Json (jsonConfig)
import Hix.Monad (M)
import qualified Hix.Options as Options
import Hix.Options (EnvRunnerOptions, TargetSpec)
componentRunner :: PackagesConfig -> TargetSpec -> M (Maybe EnvRunner)
componentRunner config spec = do
Target {component} <- targetComponent config spec
pure component.runner
envRunner :: EnvRunnerOptions -> M EnvRunner
envRunner opts = do
config <- either pure jsonConfig opts.config
fromMaybe config.defaultEnv . join <$> traverse (componentRunner config.packages) opts.component
printEnvRunner :: EnvRunnerOptions -> M ()
printEnvRunner opts = do
EnvRunner runner <- envRunner opts
liftIO (Text.putStrLn (pathText runner))