module HaskellWorks.CabalCache.Options ( readOrFromTextOption, ) where import Amazonka.Data.Text (FromText (..), fromText) import HaskellWorks.Prelude import Options.Applicative (Parser, Mod, OptionFields) import qualified Data.Text as T import qualified Options.Applicative as OA orElse :: Either e a -> Either e a -> Either e a orElse :: forall e a. Either e a -> Either e a -> Either e a orElse Either e a a Either e a b = (e -> Either e a) -> (a -> Either e a) -> Either e a -> Either e a forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (Either e a -> e -> Either e a forall a b. a -> b -> a const Either e a b) a -> Either e a forall a b. b -> Either a b Right Either e a a readOrFromTextOption :: (Read a, FromText a) => Mod OptionFields a -> Parser a readOrFromTextOption :: forall a. (Read a, FromText a) => Mod OptionFields a -> Parser a readOrFromTextOption = let fromStr :: String -> Either String a fromStr String s = String -> Either String a forall a. Read a => String -> Either String a readEither String s Either String a -> Either String a -> Either String a forall e a. Either e a -> Either e a -> Either e a `orElse` Text -> Either String a forall a. FromText a => Text -> Either String a fromText (String -> Text T.pack String s) in ReadM a -> Mod OptionFields a -> Parser a forall a. ReadM a -> Mod OptionFields a -> Parser a OA.option (ReadM a -> Mod OptionFields a -> Parser a) -> ReadM a -> Mod OptionFields a -> Parser a forall a b. (a -> b) -> a -> b $ (String -> Either String a) -> ReadM a forall a. (String -> Either String a) -> ReadM a OA.eitherReader String -> Either String a forall {a}. (Read a, FromText a) => String -> Either String a fromStr