module Data.Salak.Environment where

import           Data.Char
import           Data.Salak.Types
import           Data.Text          (pack)
import           System.Environment

-- | Load `Properties` from 'Environment'
makePropertiesFromEnvironment :: Properties -> IO Properties
makePropertiesFromEnvironment p = getEnvironment >>= (\v -> return $ makePropertiesFromEnvironment' v p)


makePropertiesFromEnvironment' :: [(String,String)] -> Properties -> Properties
makePropertiesFromEnvironment' vs = makeProperties $ go <$> vs
  where
    go (k,v) = (pack $ fmap g2 k,PStr $ pack v)
    g2 '_' = '.'
    g2 a   = toLower a