-- | -- Module: ConfCrypt.Default -- Copyright: (c) 2018 Chris Coffey -- (c) 2018 CollegeVine -- License: MIT -- Maintainer: Chris Coffey -- Stability: experimental -- Portability: portable module ConfCrypt.Default ( -- * Defaults defaultConf, defaultLines, -- * Exported for testing emptyConfCryptFile ) where import ConfCrypt.Parser (parseConfCrypt) import ConfCrypt.Types import Data.Either (fromRight) import qualified Data.Map as M import qualified Data.Text as T -- | Printed out on request as an example or starting point for new users. defaultConf :: T.Text defaultConf = "# confcrypt schema#more things\n\ \# Configuration parameters may be either a String, Int, or Boolean\n\ \# Parameter schema take the following shape:\n\ \# schema := [term | value | comment]\n\ \# term := confname : type\n\ \# confname := [a-z,A-Z,_,0-9]\n\ \# type := String | Int | Boolean\n\ \# value := confname = String\n\ \# comment := # String\n\ \# For example:\n\ \DB_CONN_STR : String\n\ \DB_CONN_STR = Connection String\n\ \ USE_SSL : Boolean\n\ \ USE_SSL = True\n\ \ TIMEOUT_MS : Int\n\ \ TIMEOUT_MS = 300" -- | The standard empty config emptyConfCryptFile :: ConfCryptFile emptyConfCryptFile = ConfCryptFile { fileName = "empty", fileContents = M.empty, parameters = [] } -- | Extracts the plaintext from 'defaultConf' into a populated config defaultLines :: ConfCryptFile defaultLines = fromRight emptyConfCryptFile $ parseConfCrypt "default Config" defaultConf