packages feed

optparse-applicative 0.14.2.0 → 0.14.3.0

raw patch · 6 files changed

+49/−50 lines, 6 filesdep ~QuickCheckdep ~semigroupsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: QuickCheck, semigroups

API changes (from Hackage documentation)

- Options.Applicative.Builder: instance Data.Semigroup.Semigroup (Options.Applicative.Builder.InfoMod a)
- Options.Applicative.Builder: instance Data.Semigroup.Semigroup Options.Applicative.Builder.PrefsMod
- Options.Applicative.Builder.Internal: instance Data.Semigroup.Semigroup (Options.Applicative.Builder.Internal.DefaultProp a)
- Options.Applicative.Builder.Internal: instance Data.Semigroup.Semigroup (Options.Applicative.Builder.Internal.Mod f a)
- Options.Applicative.Help.Chunk: instance GHC.Base.Monoid a => Data.Semigroup.Semigroup (Options.Applicative.Help.Chunk.Chunk a)
- Options.Applicative.Help.Types: instance Data.Semigroup.Semigroup Options.Applicative.Help.Types.ParserHelp
- Options.Applicative.Internal: tryP :: MonadP m => m a -> m (Either ParseError a)
- Options.Applicative.Types: instance Data.Semigroup.Semigroup Options.Applicative.Types.Completer
- Options.Applicative.Types: instance Data.Semigroup.Semigroup Options.Applicative.Types.ParseError
+ Options.Applicative.Builder: instance GHC.Base.Semigroup (Options.Applicative.Builder.InfoMod a)
+ Options.Applicative.Builder: instance GHC.Base.Semigroup Options.Applicative.Builder.PrefsMod
+ Options.Applicative.Builder.Internal: instance GHC.Base.Semigroup (Options.Applicative.Builder.Internal.DefaultProp a)
+ Options.Applicative.Builder.Internal: instance GHC.Base.Semigroup (Options.Applicative.Builder.Internal.Mod f a)
+ Options.Applicative.Help.Chunk: instance GHC.Base.Monoid a => GHC.Base.Semigroup (Options.Applicative.Help.Chunk.Chunk a)
+ Options.Applicative.Help.Pretty: (<$$>) :: Doc -> Doc -> Doc
+ Options.Applicative.Help.Pretty: (<+>) :: Doc -> Doc -> Doc
+ Options.Applicative.Help.Pretty: (<//>) :: Doc -> Doc -> Doc
+ Options.Applicative.Help.Pretty: (</>) :: Doc -> Doc -> Doc
+ Options.Applicative.Help.Pretty: SChar :: Char -> SimpleDoc -> SimpleDoc
+ Options.Applicative.Help.Pretty: SEmpty :: SimpleDoc
+ Options.Applicative.Help.Pretty: SFail :: SimpleDoc
+ Options.Applicative.Help.Pretty: SLine :: !Int -> SimpleDoc -> SimpleDoc
+ Options.Applicative.Help.Pretty: SSGR :: [SGR] -> SimpleDoc -> SimpleDoc
+ Options.Applicative.Help.Pretty: SText :: !Int -> String -> SimpleDoc -> SimpleDoc
+ Options.Applicative.Help.Pretty: align :: Doc -> Doc
+ Options.Applicative.Help.Pretty: angles :: Doc -> Doc
+ Options.Applicative.Help.Pretty: backslash :: Doc
+ Options.Applicative.Help.Pretty: black :: Doc -> Doc
+ Options.Applicative.Help.Pretty: blue :: Doc -> Doc
+ Options.Applicative.Help.Pretty: bold :: Doc -> Doc
+ Options.Applicative.Help.Pretty: bool :: Bool -> Doc
+ Options.Applicative.Help.Pretty: braces :: Doc -> Doc
+ Options.Applicative.Help.Pretty: brackets :: Doc -> Doc
+ Options.Applicative.Help.Pretty: cat :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: char :: Char -> Doc
+ Options.Applicative.Help.Pretty: class Pretty a
+ Options.Applicative.Help.Pretty: colon :: Doc
+ Options.Applicative.Help.Pretty: column :: Int -> Doc -> Doc
+ Options.Applicative.Help.Pretty: comma :: Doc
+ Options.Applicative.Help.Pretty: cyan :: Doc -> Doc
+ Options.Applicative.Help.Pretty: data Doc
+ Options.Applicative.Help.Pretty: data SimpleDoc
+ Options.Applicative.Help.Pretty: debold :: Doc -> Doc
+ Options.Applicative.Help.Pretty: deunderline :: Doc -> Doc
+ Options.Applicative.Help.Pretty: displayIO :: Handle -> SimpleDoc -> IO ()
+ Options.Applicative.Help.Pretty: displayS :: SimpleDoc -> ShowS
+ Options.Applicative.Help.Pretty: dot :: Doc
+ Options.Applicative.Help.Pretty: double :: Double -> Doc
+ Options.Applicative.Help.Pretty: dquote :: Doc
+ Options.Applicative.Help.Pretty: dquotes :: Doc -> Doc
+ Options.Applicative.Help.Pretty: dullblack :: Doc -> Doc
+ Options.Applicative.Help.Pretty: dullblue :: Doc -> Doc
+ Options.Applicative.Help.Pretty: dullcyan :: Doc -> Doc
+ Options.Applicative.Help.Pretty: dullgreen :: Doc -> Doc
+ Options.Applicative.Help.Pretty: dullmagenta :: Doc -> Doc
+ Options.Applicative.Help.Pretty: dullred :: Doc -> Doc
+ Options.Applicative.Help.Pretty: dullwhite :: Doc -> Doc
+ Options.Applicative.Help.Pretty: dullyellow :: Doc -> Doc
+ Options.Applicative.Help.Pretty: empty :: Doc
+ Options.Applicative.Help.Pretty: enclose :: Doc -> Doc -> Doc -> Doc
+ Options.Applicative.Help.Pretty: encloseSep :: Doc -> Doc -> Doc -> [Doc] -> Doc
+ Options.Applicative.Help.Pretty: equals :: Doc
+ Options.Applicative.Help.Pretty: fill :: Int -> Doc -> Doc
+ Options.Applicative.Help.Pretty: fillBreak :: Int -> Doc -> Doc
+ Options.Applicative.Help.Pretty: fillCat :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: fillSep :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: flatAlt :: Doc -> Doc -> Doc
+ Options.Applicative.Help.Pretty: float :: Float -> Doc
+ Options.Applicative.Help.Pretty: green :: Doc -> Doc
+ Options.Applicative.Help.Pretty: group :: Doc -> Doc
+ Options.Applicative.Help.Pretty: hPutDoc :: Handle -> Doc -> IO ()
+ Options.Applicative.Help.Pretty: hang :: Int -> Doc -> Doc
+ Options.Applicative.Help.Pretty: hardline :: Doc
+ Options.Applicative.Help.Pretty: hcat :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: hsep :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: indent :: Int -> Doc -> Doc
+ Options.Applicative.Help.Pretty: infixr 5 </>
+ Options.Applicative.Help.Pretty: infixr 6 <+>
+ Options.Applicative.Help.Pretty: int :: Int -> Doc
+ Options.Applicative.Help.Pretty: integer :: Integer -> Doc
+ Options.Applicative.Help.Pretty: langle :: Doc
+ Options.Applicative.Help.Pretty: lbrace :: Doc
+ Options.Applicative.Help.Pretty: lbracket :: Doc
+ Options.Applicative.Help.Pretty: line :: Doc
+ Options.Applicative.Help.Pretty: linebreak :: Doc
+ Options.Applicative.Help.Pretty: list :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: lparen :: Doc
+ Options.Applicative.Help.Pretty: magenta :: Doc -> Doc
+ Options.Applicative.Help.Pretty: nest :: Int -> Doc -> Doc
+ Options.Applicative.Help.Pretty: nesting :: Int -> Doc -> Doc
+ Options.Applicative.Help.Pretty: onblack :: Doc -> Doc
+ Options.Applicative.Help.Pretty: onblue :: Doc -> Doc
+ Options.Applicative.Help.Pretty: oncyan :: Doc -> Doc
+ Options.Applicative.Help.Pretty: ondullblack :: Doc -> Doc
+ Options.Applicative.Help.Pretty: ondullblue :: Doc -> Doc
+ Options.Applicative.Help.Pretty: ondullcyan :: Doc -> Doc
+ Options.Applicative.Help.Pretty: ondullgreen :: Doc -> Doc
+ Options.Applicative.Help.Pretty: ondullmagenta :: Doc -> Doc
+ Options.Applicative.Help.Pretty: ondullred :: Doc -> Doc
+ Options.Applicative.Help.Pretty: ondullwhite :: Doc -> Doc
+ Options.Applicative.Help.Pretty: ondullyellow :: Doc -> Doc
+ Options.Applicative.Help.Pretty: ongreen :: Doc -> Doc
+ Options.Applicative.Help.Pretty: onmagenta :: Doc -> Doc
+ Options.Applicative.Help.Pretty: onred :: Doc -> Doc
+ Options.Applicative.Help.Pretty: onwhite :: Doc -> Doc
+ Options.Applicative.Help.Pretty: onyellow :: Doc -> Doc
+ Options.Applicative.Help.Pretty: parens :: Doc -> Doc
+ Options.Applicative.Help.Pretty: plain :: Doc -> Doc
+ Options.Applicative.Help.Pretty: pretty :: Pretty a => a -> Doc
+ Options.Applicative.Help.Pretty: prettyList :: Pretty a => [a] -> Doc
+ Options.Applicative.Help.Pretty: punctuate :: Doc -> [Doc] -> [Doc]
+ Options.Applicative.Help.Pretty: putDoc :: Doc -> IO ()
+ Options.Applicative.Help.Pretty: rangle :: Doc
+ Options.Applicative.Help.Pretty: rational :: Rational -> Doc
+ Options.Applicative.Help.Pretty: rbrace :: Doc
+ Options.Applicative.Help.Pretty: rbracket :: Doc
+ Options.Applicative.Help.Pretty: red :: Doc -> Doc
+ Options.Applicative.Help.Pretty: renderCompact :: Doc -> SimpleDoc
+ Options.Applicative.Help.Pretty: renderPretty :: Float -> Int -> Doc -> SimpleDoc
+ Options.Applicative.Help.Pretty: renderSmart :: Float -> Int -> Doc -> SimpleDoc
+ Options.Applicative.Help.Pretty: rparen :: Doc
+ Options.Applicative.Help.Pretty: semi :: Doc
+ Options.Applicative.Help.Pretty: semiBraces :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: sep :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: softbreak :: Doc
+ Options.Applicative.Help.Pretty: softline :: Doc
+ Options.Applicative.Help.Pretty: space :: Doc
+ Options.Applicative.Help.Pretty: squote :: Doc
+ Options.Applicative.Help.Pretty: squotes :: Doc -> Doc
+ Options.Applicative.Help.Pretty: string :: String -> Doc
+ Options.Applicative.Help.Pretty: text :: String -> Doc
+ Options.Applicative.Help.Pretty: tupled :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: underline :: Doc -> Doc
+ Options.Applicative.Help.Pretty: vcat :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: vsep :: [Doc] -> Doc
+ Options.Applicative.Help.Pretty: white :: Doc -> Doc
+ Options.Applicative.Help.Pretty: width :: Doc -> Int -> Doc -> Doc
+ Options.Applicative.Help.Pretty: yellow :: Doc -> Doc
+ Options.Applicative.Help.Types: instance GHC.Base.Semigroup Options.Applicative.Help.Types.ParserHelp
+ Options.Applicative.Types: instance GHC.Base.Semigroup Options.Applicative.Types.Completer
+ Options.Applicative.Types: instance GHC.Base.Semigroup Options.Applicative.Types.ParseError
- Options.Applicative: CompletionResult :: (String -> IO String) -> CompletionResult
+ Options.Applicative: CompletionResult :: String -> IO String -> CompletionResult
- Options.Applicative: ParserFailure :: (String -> (h, ExitCode, Int)) -> ParserFailure h
+ Options.Applicative: ParserFailure :: String -> (h, ExitCode, Int) -> ParserFailure h
- Options.Applicative.Builder.Internal: OptionFields :: [OptName] -> Completer -> (String -> ParseError) -> OptionFields a
+ Options.Applicative.Builder.Internal: OptionFields :: [OptName] -> Completer -> String -> ParseError -> OptionFields a
- Options.Applicative.Extra: CompletionResult :: (String -> IO String) -> CompletionResult
+ Options.Applicative.Extra: CompletionResult :: String -> IO String -> CompletionResult
- Options.Applicative.Extra: ParserFailure :: (String -> (h, ExitCode, Int)) -> ParserFailure h
+ Options.Applicative.Extra: ParserFailure :: String -> (h, ExitCode, Int) -> ParserFailure h
- Options.Applicative.Types: Completer :: (String -> IO [String]) -> Completer
+ Options.Applicative.Types: Completer :: String -> IO [String] -> Completer
- Options.Applicative.Types: CompletionResult :: (String -> IO String) -> CompletionResult
+ Options.Applicative.Types: CompletionResult :: String -> IO String -> CompletionResult
- Options.Applicative.Types: ParserFailure :: (String -> (h, ExitCode, Int)) -> ParserFailure h
+ Options.Applicative.Types: ParserFailure :: String -> (h, ExitCode, Int) -> ParserFailure h
- Options.Applicative.Types: ParserM :: (forall x. (r -> Parser x) -> Parser x) -> ParserM r
+ Options.Applicative.Types: ParserM :: forall x. (r -> Parser x) -> Parser x -> ParserM r

Files

CHANGELOG.md view
@@ -1,3 +1,11 @@+## Version 0.14.3.0 (03 Oct 2018)++- Updated dependency bounds.++- Fix tab completion with Commands being unreachable.++- Clean ups and Documentation.+ ## Version 0.14.2.0 (26 Feb 2018)  - Updated dependency bounds.
Options/Applicative/Common.hs view
@@ -274,7 +274,7 @@       | otherwise       = MultNode []     go m d r f (MultP p1 p2) = MultNode [go m d r f p1, go m d r' f p2]-      where r' = r || has_positional p1+      where r' = r || hasArg p1     go m d r f (AltP p1 p2) = AltNode [go m d' r f p1, go m d' r f p2]       where d' = d || has_default p1 || has_default p2     go _ d r f (BindP p k) =@@ -283,18 +283,12 @@         Nothing -> go'         Just aa -> MultNode [ go', go True d r f (k aa) ] -    has_positional :: Parser a -> Bool-    has_positional (NilP _) = False-    has_positional (OptP p) = (is_positional . optMain) p-    has_positional (MultP p1 p2) = has_positional p1 || has_positional p2-    has_positional (AltP p1 p2) = has_positional p1 || has_positional p2-    has_positional (BindP p _) = has_positional p--    is_positional :: OptReader a -> Bool-    is_positional (OptReader {})  = False-    is_positional (FlagReader {}) = False-    is_positional (ArgReader {})  = True-    is_positional (CmdReader {})  = True+    hasArg :: Parser a -> Bool+    hasArg (NilP _) = False+    hasArg (OptP p) = (isArg . optMain) p+    hasArg (MultP p1 p2) = hasArg p1 || hasArg p2+    hasArg (AltP p1 p2) = hasArg p1 || hasArg p2+    hasArg (BindP p _) = hasArg p   simplify :: OptTree a -> OptTree a
Options/Applicative/Internal.hs view
@@ -30,7 +30,7 @@ import Control.Monad (MonadPlus(..), liftM, ap, guard) import Control.Monad.Trans.Class (MonadTrans, lift) import Control.Monad.Trans.Except-  (runExcept, runExceptT, withExcept, ExceptT(..), throwE, catchE)+  (runExcept, runExceptT, withExcept, ExceptT(..), throwE) import Control.Monad.Trans.Reader   (mapReaderT, runReader, runReaderT, Reader, ReaderT, ask) import Control.Monad.Trans.State (StateT, get, put, modify, evalStateT, runStateT)@@ -43,7 +43,6 @@   getPrefs :: m ParserPrefs    missingArgP :: ParseError -> Completer -> m a-  tryP :: m a -> m (Either ParseError a)   errorP :: ParseError -> m a   exitP :: IsCmdStart -> ArgPolicy -> Parser b -> Maybe a -> m a @@ -79,7 +78,6 @@   getPrefs = P . lift . lift $ ask    missingArgP e _ = errorP e-  tryP (P p) = P $ lift $ runExceptT p   exitP i _ p = P . maybe (throwE . MissingError i . SomeParser $ p) return   errorP = P . throwE @@ -152,7 +150,6 @@   getPrefs = Completion $ lift ask    missingArgP _ = Completion . lift . lift . ComplOption-  tryP (Completion p) = Completion $ catchE (Right <$> p) (return . Left)   exitP _ a p _ = Completion . lift . lift $ ComplParser (SomeParser p) a   errorP = Completion . throwE 
README.md view
@@ -238,7 +238,7 @@     -q --target world  It is this property which leads us to an Applicative interface-instead of a Monadic one, as all option must be considered in+instead of a Monadic one, as all options must be considered in parallel, and can not depend on the output of other options.  Note, however, that the order of sequencing is still somewhat@@ -475,8 +475,8 @@  Another interesting use for the `flag'` builder is to count the number of instances on the command line, for example, verbosity-settings could be specified on a scale; the following parser with-count the number of of instances of `-v` on the command line.+settings could be specified on a scale; the following parser will+count the number of instances of `-v` on the command line.  ```haskell length <$> many (flag' () (short 'v'))
optparse-applicative.cabal view
@@ -1,5 +1,5 @@ name:                optparse-applicative-version:             0.14.2.0+version:             0.14.3.0 synopsis:            Utilities and combinators for parsing command line options description:     optparse-applicative is a haskell library for parsing options@@ -24,11 +24,6 @@ cabal-version:       >= 1.8 extra-source-files:  CHANGELOG.md                      README.md-                     tests/Examples/Alternatives.hs-                     tests/Examples/Cabal.hs-                     tests/Examples/Commands.hs-                     tests/Examples/Hello.hs-                     tests/Examples/Formatting.hs                      tests/alt.err.txt                      tests/cabal.err.txt                      tests/carry.err.txt@@ -57,23 +52,22 @@   if impl(ghc >= 8.0)     ghc-options:  -Wno-redundant-constraints -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -  exposed-modules:     Options.Applicative,-                       Options.Applicative.Arrows,-                       Options.Applicative.BashCompletion,-                       Options.Applicative.Builder,-                       Options.Applicative.Builder.Completer,-                       Options.Applicative.Builder.Internal,-                       Options.Applicative.Common,-                       Options.Applicative.Extra,-                       Options.Applicative.Help,-                       Options.Applicative.Help.Chunk,-                       Options.Applicative.Help.Core,-                       Options.Applicative.Help.Levenshtein,-                       Options.Applicative.Help.Pretty,-                       Options.Applicative.Help.Types,-                       Options.Applicative.Types,-                       Options.Applicative.Internal-+  exposed-modules:     Options.Applicative+                     , Options.Applicative.Arrows+                     , Options.Applicative.BashCompletion+                     , Options.Applicative.Builder+                     , Options.Applicative.Builder.Completer+                     , Options.Applicative.Builder.Internal+                     , Options.Applicative.Common+                     , Options.Applicative.Extra+                     , Options.Applicative.Help+                     , Options.Applicative.Help.Chunk+                     , Options.Applicative.Help.Core+                     , Options.Applicative.Help.Levenshtein+                     , Options.Applicative.Help.Pretty+                     , Options.Applicative.Help.Types+                     , Options.Applicative.Types+                     , Options.Applicative.Internal    build-depends:       base                            == 4.*                      , transformers                    >= 0.2 && < 0.6@@ -95,10 +89,16 @@   hs-source-dirs:                        tests +  other-modules:       Examples.Alternatives+                     , Examples.Cabal+                     , Examples.Commands+                     , Examples.Formatting+                     , Examples.Hello+   build-depends:       base                      , bytestring                      == 0.10.*                      , optparse-applicative-                     , QuickCheck                      >= 2.8 && < 2.12+                     , QuickCheck                      >= 2.8 && < 2.13    if !impl(ghc >= 8)     build-depends:     semigroups
tests/test.hs view
@@ -649,16 +649,16 @@  prop_suggest :: Property prop_suggest = once $-  let p2 = subparser (command "reachable"   (info (pure ()) idm))-      p1 = subparser (command "unreachable" (info (pure ()) idm))-      p  = (,) <$> p2 <*> p1+  let p2 = subparser (command "first"   (info (pure ()) idm))+      p1 = subparser (command "fst"     (info (pure ()) idm))+      p3 = subparser (command "far-off" (info (pure ()) idm))+      p  = p2 *> p1 *> p3       i  = info p idm-      result = run i ["ureachable"]+      result = run i ["fist"]   in assertError result $ \failure ->     let (msg, _)  = renderFailure failure "prog"     in  counterexample msg-       $  isInfixOf "Did you mean this?\n    reachable" msg-      .&. not (isInfixOf "unreachable" msg)+       $  isInfixOf "Did you mean one of these?\n    first\n    fst" msg  prop_bytestring_reader :: Property prop_bytestring_reader = once $