module Taskell.IO.Config.Trello
    ( Config
    , defaultConfig
    , parser
    , token
    ) where

import ClassyPrelude

import Data.Ini.Config

import Taskell.IO.HTTP.Trello (TrelloToken)

data Config = Config
    { Config -> Maybe TrelloToken
token :: Maybe TrelloToken
    }

defaultConfig :: Config
defaultConfig :: Config
defaultConfig = Config :: Maybe TrelloToken -> Config
Config {token :: Maybe TrelloToken
token = Maybe TrelloToken
forall a. Maybe a
Nothing}

tokenP :: SectionParser (Maybe TrelloToken)
tokenP :: SectionParser (Maybe TrelloToken)
tokenP = TrelloToken -> SectionParser (Maybe TrelloToken)
fieldMb TrelloToken
"token"

parser :: IniParser Config
parser :: IniParser Config
parser = Config -> Maybe Config -> Config
forall a. a -> Maybe a -> a
fromMaybe Config
defaultConfig (Maybe Config -> Config)
-> IniParser (Maybe Config) -> IniParser Config
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> TrelloToken -> SectionParser Config -> IniParser (Maybe Config)
forall a. TrelloToken -> SectionParser a -> IniParser (Maybe a)
sectionMb TrelloToken
"trello" (Maybe TrelloToken -> Config
Config (Maybe TrelloToken -> Config)
-> SectionParser (Maybe TrelloToken) -> SectionParser Config
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> SectionParser (Maybe TrelloToken)
tokenP)