usage :: IO ()
usage = do
    progMessage header
    putStr $ usageInfo "Options (can appear anywhere):" optionsDescr
  where
    header =
        "Usage: $              -- find versions on system\n\
        \       $ thru VERSION -- remove VERSION and earlier\n\
        \       $ only VERSION -- remove only VERSION\n\
        \       $ all          -- remove all\n\
        \NOTE: Commands are 'dry run' by default and don't actually delete.\n"
usage :: IO ()
usage = do
    progMessage header
    putStr $ usageInfo "Options (can appear anywhere):" optionsDescr
  where
    header =
        "Usage: $              -- find versions on system\n\
        \       $ thru VERSION -- remove VERSION and earlier\n\
        \       $ only VERSION -- remove only VERSION\n\
        \       $ all          -- remove all\n\
        \NOTE: Commands are 'dry run' by default and don't actually delete.\n"
usage = do
    progMessage header
    putStr $ usageInfo "Options (can appear anywhere):" optionsDescr
  where
    header =
        "Usage: $              -- find versions on system\n\
        \       $ thru VERSION -- remove VERSION and earlier\n\
        \       $ only VERSION -- remove only VERSION\n\
        \       $ all          -- remove all\n\
        \NOTE: Commands are 'dry run' by default and don't actually delete.\n"