Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-optparse-applicative for 
openSUSE:Factory checked in at 2022-02-11 23:09:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-optparse-applicative (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-optparse-applicative.new.1956 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-optparse-applicative"

Fri Feb 11 23:09:25 2022 rev:22 rq:953507 version:0.17.0.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/ghc-optparse-applicative/ghc-optparse-applicative.changes
        2021-12-19 17:35:05.204292419 +0100
+++ 
/work/SRC/openSUSE:Factory/.ghc-optparse-applicative.new.1956/ghc-optparse-applicative.changes
      2022-02-11 23:11:20.731281940 +0100
@@ -1,0 +2,17 @@
+Tue Feb  1 10:27:45 UTC 2022 - Peter Simons <psim...@suse.com>
+
+- Update optparse-applicative to version 0.17.0.0.
+  ## Version 0.17.0.0 (1 Feb 2022)
+
+  - Make tabulation width configurable in usage texts.
+
+  - Separate program name and description in ParserHelp type.
+
+  - Add `helperWith` function, which can be easily used to
+    localize the help flag.
+
+  - Improve usage texts when command names are long.
+
+  - Improve Documentation.
+
+-------------------------------------------------------------------

Old:
----
  optparse-applicative-0.16.1.0.tar.gz
  optparse-applicative.cabal

New:
----
  optparse-applicative-0.17.0.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-optparse-applicative.spec ++++++
--- /var/tmp/diff_new_pack.COVqhZ/_old  2022-02-11 23:11:21.211283328 +0100
+++ /var/tmp/diff_new_pack.COVqhZ/_new  2022-02-11 23:11:21.219283352 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-optparse-applicative
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,13 +19,12 @@
 %global pkg_name optparse-applicative
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        0.16.1.0
+Version:        0.17.0.0
 Release:        0
 Summary:        Utilities and combinators for parsing command line options
 License:        BSD-3-Clause
 URL:            https://hackage.haskell.org/package/%{pkg_name}
 Source0:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
-Source1:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/2.cabal#/%{pkg_name}.cabal
 BuildRequires:  ghc-Cabal-devel
 BuildRequires:  ghc-ansi-wl-pprint-devel
 BuildRequires:  ghc-process-devel
@@ -62,7 +61,6 @@
 
 %prep
 %autosetup -n %{pkg_name}-%{version}
-cp -p %{SOURCE1} %{pkg_name}.cabal
 
 %build
 %ghc_lib_build

++++++ optparse-applicative-0.16.1.0.tar.gz -> 
optparse-applicative-0.17.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/optparse-applicative-0.16.1.0/CHANGELOG.md 
new/optparse-applicative-0.17.0.0/CHANGELOG.md
--- old/optparse-applicative-0.16.1.0/CHANGELOG.md      2001-09-09 
03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/CHANGELOG.md      2001-09-09 
03:46:40.000000000 +0200
@@ -1,3 +1,16 @@
+## Version 0.17.0.0 (1 Feb 2022)
+
+- Make tabulation width configurable in usage texts.
+
+- Separate program name and description in ParserHelp type.
+
+- Add `helperWith` function, which can be easily used to
+  localize the help flag.
+
+- Improve usage texts when command names are long.
+
+- Improve Documentation.
+
 ## Version 0.16.1.0 (21 Nov 2020)
 
 - Guard `process` dependency behind an on by default flag.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/optparse-applicative-0.16.1.0/README.md 
new/optparse-applicative-0.17.0.0/README.md
--- old/optparse-applicative-0.16.1.0/README.md 2001-09-09 03:46:40.000000000 
+0200
+++ new/optparse-applicative-0.17.0.0/README.md 2001-09-09 03:46:40.000000000 
+0200
@@ -527,22 +527,6 @@
 global options that apply to all of them. Typical examples are
 version control systems like `git`, or build tools like `cabal`.
 
-A command can be created using the `subparser` builder (or `hsubparser`,
-which is identical but for an additional `--help` option on each
-command), and commands can be added with the `command` modifier.
-For example
-
-```haskell
-subparser
-  ( command "add" (info addOptions ( progDesc "Add a file to the repository" ))
- <> command "commit" (info commitOptions ( progDesc "Record changes to the 
repository" ))
-  )
-```
-
-Each command takes a full `ParserInfo` structure, which will be
-used to extract a description for this command when generating a
-help text.
-
 Note that all the parsers appearing in a command need to have the
 same type.  For this reason, it is often best to use a sum type
 which has the same structure as the command itself. For example,
@@ -559,6 +543,22 @@
   ...
 ```
 
+A command can then be created using the `subparser` builder (or
+`hsubparser`, which is identical but for an additional `--help` option
+on each command), and commands can be added with the `command`
+modifier. For example,
+
+```haskell
+subparser
+  ( command "add" (info addCommand ( progDesc "Add a file to the repository" ))
+ <> command "commit" (info commitCommand ( progDesc "Record changes to the 
repository" ))
+  )
+```
+
+Each command takes a full `ParserInfo` structure, which will be
+used to extract a description for this command when generating a
+help text.
+
 Alternatively, you can directly return an `IO` action from a parser,
 and execute it using `join` from `Control.Monad`.
 
@@ -702,6 +702,11 @@
 
 ```
 
+**Note**. If an option name is a prefix of another option, then it
+will never be matched when disambiguation is on. See
+[#419](https://github.com/pcapriotti/optparse-applicative/issues/419)
+for more details.
+
 ### Customising the help screen
 
 optparse-applicative has a number of combinators to help customise
@@ -1020,6 +1025,6 @@
  [monoid]: http://hackage.haskell.org/package/base/docs/Data-Monoid.html
  [semigroup]: http://hackage.haskell.org/package/base/docs/Data-Semigroup.html
  [parsec]: http://hackage.haskell.org/package/parsec
- [status]: http://travis-ci.org/pcapriotti/optparse-applicative?branch=master
- [status-png]: 
https://api.travis-ci.org/pcapriotti/optparse-applicative.svg?branch=master
+ [status]: 
https://github.com/pcapriotti/optparse-applicative/actions/workflows/haskell-ci.yml
+ [status-png]: 
https://github.com/pcapriotti/optparse-applicative/workflows/Haskell-CI/badge.svg
  [ansi-wl-pprint]: http://hackage.haskell.org/package/ansi-wl-pprint
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/optparse-applicative.cabal 
new/optparse-applicative-0.17.0.0/optparse-applicative.cabal
--- old/optparse-applicative-0.16.1.0/optparse-applicative.cabal        
2001-09-09 03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/optparse-applicative.cabal        
2001-09-09 03:46:40.000000000 +0200
@@ -1,5 +1,5 @@
 name:                optparse-applicative
-version:             0.16.1.0
+version:             0.17.0.0
 synopsis:            Utilities and combinators for parsing command line options
 description:
     optparse-applicative is a haskell library for parsing options
@@ -36,6 +36,7 @@
                      tests/helponemptysub.err.txt
                      tests/long_equals.err.txt
                      tests/formatting.err.txt
+                     tests/formatting-long-subcommand.err.txt
                      tests/nested.err.txt
                      tests/optional.err.txt
                      tests/nested_optional.err.txt
@@ -54,7 +55,9 @@
   GHC==8.2.2,
   GHC==8.4.4,
   GHC==8.6.5,
-  GHC==8.8.1
+  GHC==8.8.4,
+  GHC==8.10.4,
+  GHC==9.0.1
 
 source-repository head
   type:     git
@@ -95,15 +98,15 @@
                      , Options.Applicative.Internal
 
   build-depends:       base                            == 4.*
-                     , transformers                    >= 0.2 && < 0.6
-                     , transformers-compat             >= 0.3 && < 0.7
+                     , transformers                    >= 0.2 && < 0.7
+                     , transformers-compat             >= 0.3 && < 0.8
                      , ansi-wl-pprint                  >= 0.6.8 && < 0.7
 
   if flag(process)
     build-depends:     process                         >= 1.0 && < 1.7
 
   if !impl(ghc >= 8)
-    build-depends:     semigroups                      >= 0.10 && < 0.20
+    build-depends:     semigroups                      >= 0.10 && < 0.21
                      , fail                            == 4.9.*
 
 test-suite tests
@@ -122,6 +125,7 @@
                      , Examples.Commands
                      , Examples.Formatting
                      , Examples.Hello
+                     , Examples.LongSub
 
   build-depends:       base
                      , optparse-applicative
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/src/Options/Applicative/Builder.hs 
new/optparse-applicative-0.17.0.0/src/Options/Applicative/Builder.hs
--- old/optparse-applicative-0.16.1.0/src/Options/Applicative/Builder.hs        
2001-09-09 03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/src/Options/Applicative/Builder.hs        
2001-09-09 03:46:40.000000000 +0200
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-
 module Options.Applicative.Builder (
   -- * Parser builders
   --
@@ -89,6 +88,7 @@
   columns,
   helpLongEquals,
   helpShowGlobals,
+  helpIndent,
   prefs,
   defaultPrefs,
 
@@ -219,7 +219,7 @@
 --
 -- /NOTE/: This builder is more flexible than its name and example
 -- allude. One of the motivating examples for its addition was to
--- used `const` to completely replace the usage text of an option.
+-- use `const` to completely replace the usage text of an option.
 style :: ( Doc -> Doc ) -> Mod f a
 style x = optionMod $ \p ->
   p { propDescMod = Just x }
@@ -273,6 +273,11 @@
 
 -- | Builder for a command parser. The 'command' modifier can be used to
 -- specify individual commands.
+--
+-- By default, sub-parsers allow backtracking to their parent's options when
+-- they are completed. To allow full mixing of parent and sub-parser options,
+-- turn on 'subparserInline'; otherwise, to disable backtracking completely,
+-- use 'noBacktrack'.
 subparser :: Mod CommandFields a -> Parser a
 subparser m = mkParser d g rdr
   where
@@ -385,7 +390,7 @@
 instance Semigroup (InfoMod a) where
   m1 <> m2 = InfoMod $ applyInfoMod m2 . applyInfoMod m1
 
--- | Show a full description in the help text of this parser.
+-- | Show a full description in the help text of this parser (default).
 fullDesc :: InfoMod a
 fullDesc = InfoMod $ \i -> i { infoFullDesc = True }
 
@@ -517,9 +522,14 @@
 helpLongEquals :: PrefsMod
 helpLongEquals = PrefsMod $ \p -> p { prefHelpLongEquals = True }
 
--- | Show global help information in subparser usage
+-- | Show global help information in subparser usage.
 helpShowGlobals :: PrefsMod
-helpShowGlobals = PrefsMod $ \p -> p { prefHelpShowGlobal = True}
+helpShowGlobals = PrefsMod $ \p -> p { prefHelpShowGlobal = True }
+
+-- | Set fill width in help text presentation.
+helpIndent :: Int -> PrefsMod
+helpIndent w = PrefsMod $ \p -> p { prefTabulateFill = w }
+
 
 
 -- | Create a `ParserPrefs` given a modifier
@@ -534,7 +544,8 @@
       , prefBacktrack = Backtrack
       , prefColumns = 80
       , prefHelpLongEquals = False
-      , prefHelpShowGlobal = False }
+      , prefHelpShowGlobal = False
+      , prefTabulateFill = 24 }
 
 -- Convenience shortcuts
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/src/Options/Applicative/Extra.hs 
new/optparse-applicative-0.17.0.0/src/Options/Applicative/Extra.hs
--- old/optparse-applicative-0.16.1.0/src/Options/Applicative/Extra.hs  
2001-09-09 03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/src/Options/Applicative/Extra.hs  
2001-09-09 03:46:40.000000000 +0200
@@ -4,6 +4,7 @@
   --
   -- | This module contains high-level functions to run parsers.
   helper,
+  helperWith,
   hsubparser,
   execParser,
   customExecParser,
@@ -47,16 +48,32 @@
 
 helper :: Parser (a -> a)
 helper =
+  helperWith (mconcat [
+    long "help",
+    short 'h',
+    help "Show this help text"
+  ])
+
+-- | Like helper, but with a minimal set of modifiers that can be extended
+-- as desired.
+--
+-- > opts :: ParserInfo Sample
+-- > opts = info (sample <**> helperWith (mconcat [
+-- >          long "help",
+-- >          short 'h',
+-- >          help "Show this help text",
+-- >          hidden
+-- >        ])) mempty
+helperWith :: Mod OptionFields (a -> a) -> Parser (a -> a)
+helperWith modifiers =
   option helpReader $
     mconcat
-      [ long "help",
-        short 'h',
-        help "Show this help text",
-        value id,
+      [ value id,
         metavar "",
         noGlobal,
         noArgError (ShowHelpText Nothing),
-        hidden
+        hidden,
+        modifiers
       ]
   where
     helpReader = do
@@ -197,9 +214,10 @@
       InfoMsg _
         -> mempty
       _
-        -> usageHelp $ vcatChunks
-          [ pure . parserUsage pprefs (infoParser i) . unwords $ progn : names
-          , fmap (indent 2) . infoProgDesc $ i ]
+        -> mconcat [
+            usageHelp (pure . parserUsage pprefs (infoParser i) . unwords $ 
progn : names)
+          , descriptionHelp (infoProgDesc i)
+          ]
 
     error_help = errorHelp $ case msg of
       ShowHelpText {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/src/Options/Applicative/Help/Chunk.hs 
new/optparse-applicative-0.17.0.0/src/Options/Applicative/Help/Chunk.hs
--- old/optparse-applicative-0.16.1.0/src/Options/Applicative/Help/Chunk.hs     
2001-09-09 03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/src/Options/Applicative/Help/Chunk.hs     
2001-09-09 03:46:40.000000000 +0200
@@ -128,12 +128,9 @@
 paragraph = foldr (chunked (</>) . stringChunk) mempty
           . words
 
-tabulate' :: Int -> [(Doc, Doc)] -> Chunk Doc
-tabulate' _ [] = mempty
-tabulate' size table = pure $ vcat
+-- | Display pairs of strings in a table.
+tabulate :: Int -> [(Doc, Doc)] -> Chunk Doc
+tabulate _ [] = mempty
+tabulate size table = pure $ vcat
   [ indent 2 (fillBreak size key <+> value)
   | (key, value) <- table ]
-
--- | Display pairs of strings in a table.
-tabulate :: [(Doc, Doc)] -> Chunk Doc
-tabulate = tabulate' 24
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/src/Options/Applicative/Help/Core.hs 
new/optparse-applicative-0.17.0.0/src/Options/Applicative/Help/Core.hs
--- old/optparse-applicative-0.16.1.0/src/Options/Applicative/Help/Core.hs      
2001-09-09 03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/src/Options/Applicative/Help/Core.hs      
2001-09-09 03:46:40.000000000 +0200
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 module Options.Applicative.Help.Core (
   cmdDesc,
   briefDesc,
@@ -9,6 +10,7 @@
   headerHelp,
   suggestionsHelp,
   usageHelp,
+  descriptionHelp,
   bodyHelp,
   footerHelp,
   globalsHelp,
@@ -23,8 +25,12 @@
 import Data.List (sort, intersperse, groupBy)
 import Data.Foldable (any, foldl')
 import Data.Maybe (maybeToList, catMaybes, fromMaybe)
+#if !MIN_VERSION_base(4,8,0)
 import Data.Monoid (mempty)
+#endif
+#if !MIN_VERSION_base(4,11,0)
 import Data.Semigroup (Semigroup (..))
+#endif
 import Prelude hiding (any)
 
 import Options.Applicative.Common
@@ -83,14 +89,14 @@
    in (modified, wrapping)
 
 -- | Generate descriptions for commands.
-cmdDesc :: Parser a -> [(Maybe String, Chunk Doc)]
-cmdDesc = mapParser desc
+cmdDesc :: ParserPrefs -> Parser a -> [(Maybe String, Chunk Doc)]
+cmdDesc pprefs = mapParser desc
   where
     desc _ opt =
       case optMain opt of
         CmdReader gn cmds p ->
           (,) gn $
-            tabulate
+            tabulate (prefTabulateFill pprefs)
               [ (string cmd, align (extractChunk d))
                 | cmd <- reverse cmds,
                   d <- maybeToList . fmap infoProgDesc $ p cmd
@@ -188,7 +194,7 @@
 
 -- | Common generator for full descriptions and globals
 optionsDesc :: Bool -> ParserPrefs -> Parser a -> Chunk Doc
-optionsDesc global pprefs = tabulate . catMaybes . mapParser doc
+optionsDesc global pprefs = tabulate (prefTabulateFill pprefs) . catMaybes . 
mapParser doc
   where
     doc info opt = do
       guard . not . isEmpty $ n
@@ -220,6 +226,9 @@
 usageHelp :: Chunk Doc -> ParserHelp
 usageHelp chunk = mempty { helpUsage = chunk }
 
+descriptionHelp :: Chunk Doc -> ParserHelp
+descriptionHelp chunk = mempty { helpDescription = chunk }
+
 bodyHelp :: Chunk Doc -> ParserHelp
 bodyHelp chunk = mempty { helpBody = chunk }
 
@@ -234,7 +243,7 @@
       : (group_title <$> cs)
   where
     def = "Available commands:"
-    cs = groupBy ((==) `on` fst) $ cmdDesc p
+    cs = groupBy ((==) `on` fst) $ cmdDesc pprefs p
 
     group_title a@((n, _) : _) =
       with_title (fromMaybe def n) $
@@ -256,11 +265,12 @@
 -- | Generate option summary.
 parserUsage :: ParserPrefs -> Parser a -> String -> Doc
 parserUsage pprefs p progn =
-  hsep
-    [ string "Usage:",
-      string progn,
-      align (extractChunk (briefDesc pprefs p))
-    ]
+  group $
+    hsep
+      [ string "Usage:",
+        string progn,
+        hangAtIfOver 9 35 (extractChunk (briefDesc pprefs p))
+      ]
 
 -- | Peek at the structure of the rendered tree within.
 --
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/src/Options/Applicative/Help/Pretty.hs 
new/optparse-applicative-0.17.0.0/src/Options/Applicative/Help/Pretty.hs
--- old/optparse-applicative-0.16.1.0/src/Options/Applicative/Help/Pretty.hs    
2001-09-09 03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/src/Options/Applicative/Help/Pretty.hs    
2001-09-09 03:46:40.000000000 +0200
@@ -1,12 +1,16 @@
+{-# LANGUAGE CPP #-}
 module Options.Applicative.Help.Pretty
   ( module Text.PrettyPrint.ANSI.Leijen
   , (.$.)
   , groupOrNestLine
   , altSep
+  , hangAtIfOver
   ) where
 
 import           Control.Applicative
+#if !MIN_VERSION_base(4,11,0)
 import           Data.Semigroup ((<>))
+#endif
 
 import           Text.PrettyPrint.ANSI.Leijen hiding ((<$>), (<>), columns)
 import           Text.PrettyPrint.ANSI.Leijen.Internal (Doc (..), flatten)
@@ -21,12 +25,24 @@
 -- | Apply the function if we're not at the
 --   start of our nesting level.
 ifNotAtRoot :: (Doc -> Doc) -> Doc -> Doc
-ifNotAtRoot f doc =
+ifNotAtRoot =
+  ifElseAtRoot id
+
+-- | Apply the function if we're not at the
+--   start of our nesting level.
+ifAtRoot :: (Doc -> Doc) -> Doc -> Doc
+ifAtRoot =
+  flip ifElseAtRoot id
+
+-- | Apply the function if we're not at the
+--   start of our nesting level.
+ifElseAtRoot :: (Doc -> Doc) -> (Doc -> Doc) -> Doc -> Doc
+ifElseAtRoot f g doc =
   Nesting $ \i ->
     Column $ \j ->
       if i == j
-        then doc
-        else f doc
+        then f doc
+        else g doc
 
 
 -- | Render flattened text on this line, or start
@@ -54,3 +70,23 @@
 altSep :: Doc -> Doc -> Doc
 altSep x y =
   group (x <+> char '|' <> line) <//> y
+
+
+-- | Printer hacks to get nice indentation for long commands
+--   and subcommands.
+--
+--   If we're starting this section over the desired width
+-- ?? (usually 1/3 of the ribbon), then we will make a line
+--   break, indent all of the usage, and go.
+--
+--   The ifAtRoot is an interesting clause. If this whole
+--   operation is put under a `group` then the linebreak
+--   will disappear; then item d will therefore not be at
+--   the starting column, and it won't be indented more.
+hangAtIfOver :: Int -> Int -> Doc -> Doc
+hangAtIfOver i j d =
+  Column $ \k ->
+    if k <= j then
+      align d
+    else
+      linebreak <> ifAtRoot (indent i) d
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/src/Options/Applicative/Help/Types.hs 
new/optparse-applicative-0.17.0.0/src/Options/Applicative/Help/Types.hs
--- old/optparse-applicative-0.16.1.0/src/Options/Applicative/Help/Types.hs     
2001-09-09 03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/src/Options/Applicative/Help/Types.hs     
2001-09-09 03:46:40.000000000 +0200
@@ -14,26 +14,30 @@
   , helpSuggestions :: Chunk Doc
   , helpHeader :: Chunk Doc
   , helpUsage :: Chunk Doc
+  , helpDescription :: Chunk Doc
   , helpBody :: Chunk Doc
   , helpGlobals :: Chunk Doc
-  , helpFooter :: Chunk Doc }
+  , helpFooter :: Chunk Doc
+  }
 
 instance Show ParserHelp where
   showsPrec _ h = showString (renderHelp 80 h)
 
 instance Monoid ParserHelp where
-  mempty = ParserHelp mempty mempty mempty mempty mempty mempty mempty
+  mempty = ParserHelp mempty mempty mempty mempty mempty mempty mempty mempty
   mappend = (<>)
 
 instance Semigroup ParserHelp where
-  (ParserHelp e1 s1 h1 u1 b1 g1 f1) <> (ParserHelp e2 s2 h2 u2 b2 g2 f2)
+  (ParserHelp e1 s1 h1 u1 d1 b1 g1 f1) <> (ParserHelp e2 s2 h2 u2 d2 b2 g2 f2)
     = ParserHelp (mappend e1 e2) (mappend s1 s2)
                  (mappend h1 h2) (mappend u1 u2)
-                 (mappend b1 b2) (mappend g1 g2)
-                 (mappend f1 f2)
+                 (mappend d1 d2) (mappend b1 b2)
+                 (mappend g1 g2) (mappend f1 f2)
 
 helpText :: ParserHelp -> Doc
-helpText (ParserHelp e s h u b g f) = extractChunk . vsepChunks $ [e, s, h, u, 
b, g, f]
+helpText (ParserHelp e s h u d b g f) =
+  extractChunk $
+    vsepChunks [e, s, h, u, fmap (indent 2) d, b, g, f]
 
 -- | Convert a help text to 'String'.
 renderHelp :: Int -> ParserHelp -> String
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/src/Options/Applicative/NonEmpty.hs 
new/optparse-applicative-0.17.0.0/src/Options/Applicative/NonEmpty.hs
--- old/optparse-applicative-0.16.1.0/src/Options/Applicative/NonEmpty.hs       
2001-09-09 03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/src/Options/Applicative/NonEmpty.hs       
2001-09-09 03:46:40.000000000 +0200
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP, Rank2Types, ExistentialQuantification #-}
 module Options.Applicative.NonEmpty (
   some1
 ) where
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/src/Options/Applicative/Types.hs 
new/optparse-applicative-0.17.0.0/src/Options/Applicative/Types.hs
--- old/optparse-applicative-0.16.1.0/src/Options/Applicative/Types.hs  
2001-09-09 03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/src/Options/Applicative/Types.hs  
2001-09-09 03:46:40.000000000 +0200
@@ -125,7 +125,8 @@
                                   -- single space (default: False)
   , prefHelpShowGlobal :: Bool    -- ^ when displaying subparsers' usage help,
                                   -- show parent options under a "global 
options"
-                                  -- section (default: True)
+                                  -- section (default: False)
+  , prefTabulateFill ::Int       -- ^ Indentation width for tables
   } deriving (Eq, Show)
 
 data OptName = OptShort !Char
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/tests/Examples/LongSub.hs 
new/optparse-applicative-0.17.0.0/tests/Examples/LongSub.hs
--- old/optparse-applicative-0.16.1.0/tests/Examples/LongSub.hs 1970-01-01 
01:00:00.000000000 +0100
+++ new/optparse-applicative-0.17.0.0/tests/Examples/LongSub.hs 2001-09-09 
03:46:40.000000000 +0200
@@ -0,0 +1,34 @@
+{-# LANGUAGE CPP #-}
+module Examples.LongSub where
+
+import Data.Monoid
+import Options.Applicative
+
+#if __GLASGOW_HASKELL__ <= 702
+(<>) :: Monoid a => a -> a -> a
+(<>) = mappend
+#endif
+
+data Sample
+  = Hello [String]
+  | Goodbye
+  deriving (Eq, Show)
+
+hello :: Parser Sample
+hello =
+  Hello
+    <$> many (argument str (metavar "TARGET..."))
+    <*  switch (long "first-flag")
+    <*  switch (long "second-flag")
+    <*  switch (long "third-flag")
+    <*  switch (long "fourth-flag")
+
+sample :: Parser Sample
+sample = hsubparser
+       ( command "hello-very-long-sub"
+         (info hello
+               (progDesc "Print greeting"))
+       )
+
+opts :: ParserInfo Sample
+opts = info (sample <**> helper) idm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/optparse-applicative-0.16.1.0/tests/cabal.err.txt 
new/optparse-applicative-0.17.0.0/tests/cabal.err.txt
--- old/optparse-applicative-0.16.1.0/tests/cabal.err.txt       2001-09-09 
03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/tests/cabal.err.txt       2001-09-09 
03:46:40.000000000 +0200
@@ -1,4 +1,5 @@
 Usage: cabal configure [--enable-tests] [-f|--flags FLAGS]
+
   Prepare to build the package
 
 Available options:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/tests/formatting-long-subcommand.err.txt 
new/optparse-applicative-0.17.0.0/tests/formatting-long-subcommand.err.txt
--- old/optparse-applicative-0.16.1.0/tests/formatting-long-subcommand.err.txt  
1970-01-01 01:00:00.000000000 +0100
+++ new/optparse-applicative-0.17.0.0/tests/formatting-long-subcommand.err.txt  
2001-09-09 03:46:40.000000000 +0200
@@ -0,0 +1,9 @@
+Usage: formatting-long-subcommand hello-very-long-sub 
+         [TARGET...] [--first-flag] 
+         [--second-flag] [--third-flag] 
+         [--fourth-flag]
+
+  Print greeting
+
+Available options:
+  -h,--help                Show this help text
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-applicative-0.16.1.0/tests/formatting.err.txt 
new/optparse-applicative-0.17.0.0/tests/formatting.err.txt
--- old/optparse-applicative-0.16.1.0/tests/formatting.err.txt  2001-09-09 
03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/tests/formatting.err.txt  2001-09-09 
03:46:40.000000000 +0200
@@ -1,4 +1,5 @@
 Usage: formatting [-t|--test FOO_BAR_BAZ_LONG_METAVARIABLE]
+
   This is a very long program description. This
   text should be automatically wrapped to fit the
   size of the terminal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/optparse-applicative-0.16.1.0/tests/hello.err.txt 
new/optparse-applicative-0.17.0.0/tests/hello.err.txt
--- old/optparse-applicative-0.16.1.0/tests/hello.err.txt       2001-09-09 
03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/tests/hello.err.txt       2001-09-09 
03:46:40.000000000 +0200
@@ -1,6 +1,7 @@
 hello - a test for optparse-applicative
 
 Usage: hello --hello TARGET [-q|--quiet] [--repeat INT]
+
   Print a greeting for TARGET
 
 Available options:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/optparse-applicative-0.16.1.0/tests/test.hs 
new/optparse-applicative-0.17.0.0/tests/test.hs
--- old/optparse-applicative-0.16.1.0/tests/test.hs     2001-09-09 
03:46:40.000000000 +0200
+++ new/optparse-applicative-0.17.0.0/tests/test.hs     2001-09-09 
03:46:40.000000000 +0200
@@ -9,6 +9,7 @@
 import qualified Examples.Cabal as Cabal
 import qualified Examples.Alternatives as Alternatives
 import qualified Examples.Formatting as Formatting
+import qualified Examples.LongSub as LongSub
 
 import           Control.Applicative
 import           Control.Monad
@@ -891,6 +892,18 @@
     post = run i ["--help", "not-a-command"]
   in grabHelpMessage pre === grabHelpMessage post
 
+
+prop_long_command_line_flow :: Property
+prop_long_command_line_flow = once $
+  let p = LongSub.sample <**> helper
+      i = info p
+        ( progDesc (concat
+            [ "This is a very long program description. "
+            , "This text should be automatically wrapped "
+            , "to fit the size of the terminal" ]) )
+  in checkHelpTextWith ExitSuccess (prefs (columns 50)) 
"formatting-long-subcommand" i ["hello-very-long-sub", "--help"]
+
+
 ---
 
 deriving instance Arbitrary a => Arbitrary (Chunk a)

Reply via email to