-- | Command line parsers that are common to various Cabin reports.

module Penny.Cabin.Parsers where

import qualified Penny.Cabin.Options as CO
import qualified System.Console.MultiArg.Combinator as C


zeroBalances :: C.OptSpec CO.ShowZeroBalances
zeroBalances = C.OptSpec ["zero-balances"] "" (C.ChoiceArg ls)
  where
    ls = [ ("show", CO.ShowZeroBalances True)
         , ("hide", CO.ShowZeroBalances False) ]

data SortOrder = Ascending | Descending deriving (Eq, Ord, Show)

order :: C.OptSpec SortOrder
order = C.OptSpec ["order"] "" (C.ChoiceArg ls)
  where
    ls = [ ("ascending", Ascending)
         , ("descending", Descending) ]

help :: C.OptSpec ()
help = C.OptSpec ["help"] "h" (C.NoArg ())