module Conferer.Provider.CLIArgs 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