aboutsummaryrefslogtreecommitdiffstats
path: root/src/CliOptions.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/CliOptions.hs')
-rw-r--r--src/CliOptions.hs15
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