lib: Remove checkReportOpts and checkRawOpts.
checkRawOpts has been a no-op for at least four years, and checkReportOpts only makes sure that depth_ is positive, which is taken care of by the maybeposintopt parser.
This commit is contained in:
parent
906da6e6bd
commit
f76cdc4317
@ -16,7 +16,6 @@ module Hledger.Reports.ReportOptions (
|
||||
FormatStr,
|
||||
defreportopts,
|
||||
rawOptsToReportOpts,
|
||||
checkReportOpts,
|
||||
flat_,
|
||||
tree_,
|
||||
reportOptsToggleStatus,
|
||||
@ -173,69 +172,45 @@ defreportopts = ReportOpts
|
||||
def
|
||||
|
||||
rawOptsToReportOpts :: RawOpts -> IO ReportOpts
|
||||
rawOptsToReportOpts rawopts = checkReportOpts <$> do
|
||||
let rawopts' = checkRawOpts rawopts
|
||||
rawOptsToReportOpts rawopts = do
|
||||
d <- getCurrentDay
|
||||
no_color <- isJust <$> lookupEnv "NO_COLOR"
|
||||
supports_color <- hSupportsANSIColor stdout
|
||||
let colorflag = stringopt "color" rawopts
|
||||
return defreportopts{
|
||||
today_ = Just d
|
||||
,period_ = periodFromRawOpts d rawopts'
|
||||
,interval_ = intervalFromRawOpts rawopts'
|
||||
,statuses_ = statusesFromRawOpts rawopts'
|
||||
,value_ = valuationTypeFromRawOpts rawopts'
|
||||
,infer_value_ = boolopt "infer-value" rawopts'
|
||||
,depth_ = maybeposintopt "depth" rawopts'
|
||||
,date2_ = boolopt "date2" rawopts'
|
||||
,empty_ = boolopt "empty" rawopts'
|
||||
,no_elide_ = boolopt "no-elide" rawopts'
|
||||
,real_ = boolopt "real" rawopts'
|
||||
,format_ = maybestringopt "format" rawopts' -- XXX move to CliOpts or move validation from Cli.CliOptions to here
|
||||
,query_ = unwords . map quoteIfNeeded $ listofstringopt "args" rawopts' -- doesn't handle an arg like "" right
|
||||
,average_ = boolopt "average" rawopts'
|
||||
,related_ = boolopt "related" rawopts'
|
||||
,txn_dates_ = boolopt "txn-dates" rawopts'
|
||||
,balancetype_ = balancetypeopt rawopts'
|
||||
,accountlistmode_ = accountlistmodeopt rawopts'
|
||||
,drop_ = posintopt "drop" rawopts'
|
||||
,row_total_ = boolopt "row-total" rawopts'
|
||||
,no_total_ = boolopt "no-total" rawopts'
|
||||
,sort_amount_ = boolopt "sort-amount" rawopts'
|
||||
,percent_ = boolopt "percent" rawopts'
|
||||
,invert_ = boolopt "invert" rawopts'
|
||||
,pretty_tables_ = boolopt "pretty-tables" rawopts'
|
||||
,period_ = periodFromRawOpts d rawopts
|
||||
,interval_ = intervalFromRawOpts rawopts
|
||||
,statuses_ = statusesFromRawOpts rawopts
|
||||
,value_ = valuationTypeFromRawOpts rawopts
|
||||
,infer_value_ = boolopt "infer-value" rawopts
|
||||
,depth_ = maybeposintopt "depth" rawopts
|
||||
,date2_ = boolopt "date2" rawopts
|
||||
,empty_ = boolopt "empty" rawopts
|
||||
,no_elide_ = boolopt "no-elide" rawopts
|
||||
,real_ = boolopt "real" rawopts
|
||||
,format_ = maybestringopt "format" rawopts -- XXX move to CliOpts or move validation from Cli.CliOptions to here
|
||||
,query_ = unwords . map quoteIfNeeded $ listofstringopt "args" rawopts -- doesn't handle an arg like "" right
|
||||
,average_ = boolopt "average" rawopts
|
||||
,related_ = boolopt "related" rawopts
|
||||
,txn_dates_ = boolopt "txn-dates" rawopts
|
||||
,balancetype_ = balancetypeopt rawopts
|
||||
,accountlistmode_ = accountlistmodeopt rawopts
|
||||
,drop_ = posintopt "drop" rawopts
|
||||
,row_total_ = boolopt "row-total" rawopts
|
||||
,no_total_ = boolopt "no-total" rawopts
|
||||
,sort_amount_ = boolopt "sort-amount" rawopts
|
||||
,percent_ = boolopt "percent" rawopts
|
||||
,invert_ = boolopt "invert" rawopts
|
||||
,pretty_tables_ = boolopt "pretty-tables" rawopts
|
||||
,color_ = and [not no_color
|
||||
,not $ colorflag `elem` ["never","no"]
|
||||
,colorflag `elem` ["always","yes"] || supports_color
|
||||
]
|
||||
,forecast_ = forecastPeriodFromRawOpts d rawopts'
|
||||
,transpose_ = boolopt "transpose" rawopts'
|
||||
,forecast_ = forecastPeriodFromRawOpts d rawopts
|
||||
,transpose_ = boolopt "transpose" rawopts
|
||||
}
|
||||
|
||||
-- | Do extra validation of raw option values, raising an error if there's a problem.
|
||||
checkRawOpts :: RawOpts -> RawOpts
|
||||
checkRawOpts rawopts
|
||||
-- our standard behaviour is to accept conflicting options actually,
|
||||
-- using the last one - more forgiving for overriding command-line aliases
|
||||
-- | countopts ["change","cumulative","historical"] > 1
|
||||
-- = usageError "please specify at most one of --change, --cumulative, --historical"
|
||||
-- | countopts ["flat","tree"] > 1
|
||||
-- = usageError "please specify at most one of --flat, --tree"
|
||||
-- | countopts ["daily","weekly","monthly","quarterly","yearly"] > 1
|
||||
-- = usageError "please specify at most one of --daily, "
|
||||
| otherwise = rawopts
|
||||
-- where
|
||||
-- countopts = length . filter (`boolopt` rawopts)
|
||||
|
||||
-- | Do extra validation of report options, raising an error if there's a problem.
|
||||
checkReportOpts :: ReportOpts -> ReportOpts
|
||||
checkReportOpts ropts@ReportOpts{..} =
|
||||
either usageError (const ropts) $ do
|
||||
case depth_ of
|
||||
Just d | d < 0 -> Left "--depth should have a positive number"
|
||||
_ -> Right ()
|
||||
|
||||
accountlistmodeopt :: RawOpts -> AccountListMode
|
||||
accountlistmodeopt =
|
||||
fromMaybe ALFlat . choiceopt parse where
|
||||
|
||||
Loading…
Reference in New Issue
Block a user