{-# LANGUAGE TupleSections #-}
module Hcompta.CLI.Args where
+import qualified Data.List
+import qualified Data.Text.Lazy as TL
import System.Console.GetOpt
( getOpt
, ArgOrder(..)
import Hcompta.CLI.Context (Context)
import qualified Hcompta.CLI.Write as Write
+import Hcompta.Lib.Leijen ((<>))
+import qualified Hcompta.Lib.Leijen as W
type Options context
= [OptDescr (Context -> context -> IO context)]
parse context usage options (ctx, args) =
case getOpt RequireOrder options args of
(parsers, cmds, []) -> do
- foldl (\acc parser -> acc >>= parser context) (return ctx) parsers
+ Data.List.foldl' (\acc parser -> acc >>= parser context) (return ctx) parsers
>>= return . (, cmds)
(_, _, errs) -> do
- usage >>= Write.fatal context . (concat errs ++)
+ usage >>= Write.fatal context .
+ (W.vsep (map (W.text .TL.pack) errs) <>) .
+ W.text . TL.pack