module Vgrep.Environment.Config.Sources.Env where

import Control.Monad.IO.Class
import Data.Monoid
import System.Environment

import Vgrep.Environment.Config.Monoid


-- | Determines the 'ConfigMonoid' value for 'Vgrep.Environment.Config._editor'
-- ('_meditor') from the environment variable @$EDITOR@.
editorConfigFromEnv :: MonadIO io => io ConfigMonoid
editorConfigFromEnv :: io ConfigMonoid
editorConfigFromEnv = do
    Maybe String
configuredEditor <- IO (Maybe String) -> io (Maybe String)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (String -> IO (Maybe String)
lookupEnv String
"EDITOR")
    ConfigMonoid -> io ConfigMonoid
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ConfigMonoid
forall a. Monoid a => a
mempty { _meditor :: First String
_meditor = Maybe String -> First String
forall a. Maybe a -> First a
First Maybe String
configuredEditor })