packages feed

smith-cli-0.0.1: src/Smith/Cli/Configuration.hs

-- |
-- Command line configuration.
--
{-# LANGUAGE OverloadedStrings #-}
module Smith.Cli.Configuration (
    Configuration (..)
  , configure
  ) where

import qualified System.Directory as Directory
import qualified System.Environment as Environment
import           System.FilePath (FilePath, (</>))


data Configuration =
  Configuration {
      configurationSmithHome :: FilePath
    } deriving (Eq, Ord, Show)


configure :: IO Configuration
configure = do
  Environment.lookupEnv "SMITH_HOME" >>=
    maybe
      (Configuration <$> defaultSmithHome)
      (pure . Configuration)


defaultSmithHome :: IO FilePath
defaultSmithHome =
  Directory.getHomeDirectory >>= \home ->
    pure (home </> ".smith")