module Conferer.Provider.CLIArgs
(
mkCLIArgsProvider
, mkCLIArgsProvider'
, parseArgsIntoKeyValue
)
where
import Data.Text (Text)
import qualified Data.Text as Text
import Data.Maybe (mapMaybe)
import Data.String (fromString)
import System.Environment (getArgs)
import Conferer.Types
import Conferer.Provider.Simple
mkCLIArgsProvider' :: [String] -> ProviderCreator
mkCLIArgsProvider' args = \config -> do
let configMap = parseArgsIntoKeyValue args
mkMapProvider configMap config
mkCLIArgsProvider :: ProviderCreator
mkCLIArgsProvider = \config -> do
args <- getArgs
mkCLIArgsProvider' args config
parseArgsIntoKeyValue :: [String] -> [(Key, Text)]
parseArgsIntoKeyValue =
fmap (\(k, s) -> (fromString $ Text.unpack k, s)) .
fmap (\s -> fmap (Text.drop 1) $ Text.breakOn "=" s).
mapMaybe (Text.stripPrefix "--") .
takeWhile (/= "--") .
fmap Text.pack