configifier 0.0.6 → 0.0.7
raw patch · 2 files changed
+12/−4 lines, 2 filesdep +directorydep +functor-infixPVP ok
version bump matches the API change (PVP)
Dependencies added: directory, functor-infix
API changes (from Hackage documentation)
Files
- configifier.cabal +3/−1
- src/Data/Configifier.hs +9/−3
configifier.cabal view
@@ -1,5 +1,5 @@ name: configifier-version: 0.0.6+version: 0.0.7 synopsis: parser for config files, shell variables, command line args. description: See <https://github.com/zerobuzz/configifier/blob/master/README.md README> license: AGPL-3@@ -36,7 +36,9 @@ , bytestring >=0.10 && <0.11 , case-insensitive >=1.2 && <1.3 , containers >=0.5 && <0.6+ , directory >=1.2 && <1.3 , either >=4.3 && <4.5+ , functor-infix >=0.0.3 && <0.1 , mtl >=2.1 && <2.3 , regex-easy >=0.1.0.0 && <0.2 , safe >=0.3 && <0.4
src/Data/Configifier.hs view
@@ -24,11 +24,13 @@ import Control.Applicative ((<$>), (<|>)) import Control.Exception (Exception, throwIO)+import Control.Monad (filterM) import Data.ByteString.Char8 (pack) import Data.CaseInsensitive (mk) import Data.Char (toUpper) import Data.Either.Combinators (mapLeft) import Data.Function (on)+import Data.Functor.Infix ((<$$>)) import Data.List (nubBy, intercalate, isPrefixOf) import Data.Maybe (catMaybes) import Data.Monoid (Monoid, (<>), mempty, mappend, mconcat)@@ -39,6 +41,7 @@ import GHC.TypeLits (Symbol, KnownSymbol, symbolVal) import Language.Haskell.TH.Quote (QuasiQuoter(..)) import Language.Haskell.TH (runQ)+import System.Directory (doesFileExist) import System.Environment (getEnvironment, getArgs, getProgName) import System.IO.Unsafe (unsafePerformIO) @@ -218,11 +221,14 @@ -- processes shell environment variables (with `getProgName` as -- prefix), and finally (3) processes command line args, turning -- @--config@ arguments into further recursive config file loads.+--+-- File path arguments are optiona; config paths to non-existent+-- files are silently dropped. defaultSources :: [FilePath] -> IO [Source] defaultSources filePaths = do- let files = YamlFile <$> filePaths- env <- ShellEnv <$> (getEnvironment >>= withShellEnvPrefix)- args <- CommandLine <$> getArgs+ files <- YamlFile <$$> filterM doesFileExist filePaths+ env <- ShellEnv <$> (getEnvironment >>= withShellEnvPrefix)+ args <- CommandLine <$> getArgs return $ files ++ [env] ++ readUserConfigFiles [args] -- | Require that all shell env variables start with executable name.