diff options
Diffstat (limited to 'src/CliOptions.hs')
-rw-r--r-- | src/CliOptions.hs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/CliOptions.hs b/src/CliOptions.hs index 60f05ad..9d8baf6 100644 --- a/src/CliOptions.hs +++ b/src/CliOptions.hs @@ -7,11 +7,20 @@ module CliOptions import Data.Semigroup ((<>)) import Options.Applicative +import I18n (Locale(EN, FR)) + data Options = Options { slackApiToken :: String - , language :: String + , language :: Locale } +-- | Parse the language command line option string into a `Locale` type +parseLanguage :: ReadM Locale +parseLanguage = eitherReader $ \s -> case s of + "en" -> Right EN + "fr" -> Right FR + _ -> Left "Unrecognised language code" + options :: Parser Options options = Options <$> strOption @@ -19,11 +28,11 @@ options = Options <> metavar "TOKEN" <> value "" <> help "Token to access Slack's real-time messaging API" ) - <*> strOption + <*> option parseLanguage ( long "language" <> short 'l' <> metavar "en" - <> value "en" + <> value EN <> help "Set the language Sorbot will speak in (en | fr)" ) parseOptions :: IO Options |