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:
Stephen Morgan 2020-09-02 11:36:56 +10:00 committed by Simon Michael
parent 906da6e6bd
commit f76cdc4317

View File

@ -16,7 +16,6 @@ module Hledger.Reports.ReportOptions (
FormatStr, FormatStr,
defreportopts, defreportopts,
rawOptsToReportOpts, rawOptsToReportOpts,
checkReportOpts,
flat_, flat_,
tree_, tree_,
reportOptsToggleStatus, reportOptsToggleStatus,
@ -173,69 +172,45 @@ defreportopts = ReportOpts
def def
rawOptsToReportOpts :: RawOpts -> IO ReportOpts rawOptsToReportOpts :: RawOpts -> IO ReportOpts
rawOptsToReportOpts rawopts = checkReportOpts <$> do rawOptsToReportOpts rawopts = do
let rawopts' = checkRawOpts rawopts
d <- getCurrentDay d <- getCurrentDay
no_color <- isJust <$> lookupEnv "NO_COLOR" no_color <- isJust <$> lookupEnv "NO_COLOR"
supports_color <- hSupportsANSIColor stdout supports_color <- hSupportsANSIColor stdout
let colorflag = stringopt "color" rawopts let colorflag = stringopt "color" rawopts
return defreportopts{ return defreportopts{
today_ = Just d today_ = Just d
,period_ = periodFromRawOpts d rawopts' ,period_ = periodFromRawOpts d rawopts
,interval_ = intervalFromRawOpts rawopts' ,interval_ = intervalFromRawOpts rawopts
,statuses_ = statusesFromRawOpts rawopts' ,statuses_ = statusesFromRawOpts rawopts
,value_ = valuationTypeFromRawOpts rawopts' ,value_ = valuationTypeFromRawOpts rawopts
,infer_value_ = boolopt "infer-value" rawopts' ,infer_value_ = boolopt "infer-value" rawopts
,depth_ = maybeposintopt "depth" rawopts' ,depth_ = maybeposintopt "depth" rawopts
,date2_ = boolopt "date2" rawopts' ,date2_ = boolopt "date2" rawopts
,empty_ = boolopt "empty" rawopts' ,empty_ = boolopt "empty" rawopts
,no_elide_ = boolopt "no-elide" rawopts' ,no_elide_ = boolopt "no-elide" rawopts
,real_ = boolopt "real" rawopts' ,real_ = boolopt "real" rawopts
,format_ = maybestringopt "format" rawopts' -- XXX move to CliOpts or move validation from Cli.CliOptions to here ,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 ,query_ = unwords . map quoteIfNeeded $ listofstringopt "args" rawopts -- doesn't handle an arg like "" right
,average_ = boolopt "average" rawopts' ,average_ = boolopt "average" rawopts
,related_ = boolopt "related" rawopts' ,related_ = boolopt "related" rawopts
,txn_dates_ = boolopt "txn-dates" rawopts' ,txn_dates_ = boolopt "txn-dates" rawopts
,balancetype_ = balancetypeopt rawopts' ,balancetype_ = balancetypeopt rawopts
,accountlistmode_ = accountlistmodeopt rawopts' ,accountlistmode_ = accountlistmodeopt rawopts
,drop_ = posintopt "drop" rawopts' ,drop_ = posintopt "drop" rawopts
,row_total_ = boolopt "row-total" rawopts' ,row_total_ = boolopt "row-total" rawopts
,no_total_ = boolopt "no-total" rawopts' ,no_total_ = boolopt "no-total" rawopts
,sort_amount_ = boolopt "sort-amount" rawopts' ,sort_amount_ = boolopt "sort-amount" rawopts
,percent_ = boolopt "percent" rawopts' ,percent_ = boolopt "percent" rawopts
,invert_ = boolopt "invert" rawopts' ,invert_ = boolopt "invert" rawopts
,pretty_tables_ = boolopt "pretty-tables" rawopts' ,pretty_tables_ = boolopt "pretty-tables" rawopts
,color_ = and [not no_color ,color_ = and [not no_color
,not $ colorflag `elem` ["never","no"] ,not $ colorflag `elem` ["never","no"]
,colorflag `elem` ["always","yes"] || supports_color ,colorflag `elem` ["always","yes"] || supports_color
] ]
,forecast_ = forecastPeriodFromRawOpts d rawopts' ,forecast_ = forecastPeriodFromRawOpts d rawopts
,transpose_ = boolopt "transpose" 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 :: RawOpts -> AccountListMode
accountlistmodeopt = accountlistmodeopt =
fromMaybe ALFlat . choiceopt parse where fromMaybe ALFlat . choiceopt parse where