@@ -11,6 +11,7 @@
11module Data.Yaml.Config
11module Data.Yaml.Config
12 ( -- * High-level
12 ( -- * High-level
13 loadYamlSettings
13 loadYamlSettings
14+ , loadYamlSettingsArgs
14 -- ** EnvUsage
15 -- ** EnvUsage
15 , EnvUsage
16 , EnvUsage
16 , ignoreEnv
17 , ignoreEnv
@@ -34,7 +35,7 @@ import Data.List.NonEmpty (nonEmpty)
34import Data.Aeson
35import Data.Aeson
35import qualified Data.HashMap.Strict as H
36import qualified Data.HashMap.Strict as H
36import Data.Text (Text, pack)
37import Data.Text (Text, pack)
37−import System.Environment (getEnvironment)
38+import System.Environment (getArgs, getEnvironment)
38import Control.Arrow ((***))
39import Control.Arrow ((***))
39import Control.Monad (forM)
40import Control.Monad (forM)
40import Control.Exception (throwIO)
41import Control.Exception (throwIO)
@@ -195,3 +196,16 @@ loadYamlSettings runTimeFiles compileValues envUsage = do
195 case fromJSON value of
196 case fromJSON value of
196 Error s -> error $ "Could not convert to AppSettings: " ++ s
197 Error s -> error $ "Could not convert to AppSettings: " ++ s
197 Success settings -> return settings
198 Success settings -> return settings
200+-- | Same as @loadYamlSettings@, but get the list of runtime config files from
201+-- the command line arguments.
205+ :: FromJSON settings
206+ => [Value] -- ^ any other values to use, usually from compile time config. overridden by files
207+ -> EnvUsage -- ^ use environment variables
209+loadYamlSettingsArgs values env = do
211+ loadYamlSettings args values env