module HaskellWorks.CabalCache.Options
  ( readOrFromTextOption
  ) where

import Network.AWS.Data.Text (FromText (..), fromText)
import Options.Applicative   hiding (columns)
import Text.Read             (readEither)

import qualified Data.Text as T

readOrFromTextOption :: (Read a, FromText a) => Mod OptionFields a -> Parser a
readOrFromTextOption =
  let fromStr s = readEither s <|> fromText (T.pack s)
  in option $ eitherReader fromStr