hwm-0.1.0: src/HWM/CLI/Command/Environment/SetDefault.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE NoImplicitPrelude #-}
module HWM.CLI.Command.Environment.SetDefault (EnvSetDefaultOptions, runEnvSetDefault) where
import HWM.Core.Parsing (ParseCLI (..))
import HWM.Domain.Config (Config (..))
import HWM.Domain.ConfigT (ConfigT, updateConfig)
import HWM.Domain.Environments (Environments (..), getBuildEnvironment, printEnvironments)
import Options.Applicative (help, metavar, strArgument)
import Relude
newtype EnvSetDefaultOptions = EnvSetDefaultOptions {envName :: Text}
deriving (Show)
instance ParseCLI EnvSetDefaultOptions where
parseCLI = EnvSetDefaultOptions <$> strArgument (metavar "ENV" <> help "Name of the environment to set as default")
runEnvSetDefault :: EnvSetDefaultOptions -> ConfigT ()
runEnvSetDefault EnvSetDefaultOptions {..} = do
_ <- getBuildEnvironment (Just envName)
let setDefaultEnv cfg = cfg {cfgEnvironments = (cfgEnvironments cfg) {envDefault = envName}}
updateConfig (pure . setDefaultEnv) $ printEnvironments Nothing