packages feed

mdoc 0.4.1.0 → 0.4.1.1

raw patch · 6 files changed

+65/−28 lines, 6 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

examples/example.1 view
@@ -9,7 +9,8 @@ .Nm .Bk -words .Op Fl v-.Fl i Ar INPUT+.Op Fl a | Fl b+.Op Fl i Ar INPUT .Op Fl Fl debug .Ar FILE .Op Ar FILE ...@@ -17,6 +18,10 @@ .Sh DESCRIPTION The options are as follows: .Bl -tag -width indent+.It Fl a , Fl Fl apple+Use apples+.It Fl b , Fl Fl banana+Use bananas .It Fl i Ar INPUT .It Fl v , Fl Fl verbose .It Fl Fl debug
mdoc.cabal view
@@ -1,6 +1,6 @@ cabal-version:      1.18 name:               mdoc-version:            0.4.1.0+version:            0.4.1.1 license:            AGPL-3 license-file:       COPYING maintainer:         Pat Brisbin
src/Mdoc/Data/Positional.hs view
@@ -71,8 +71,6 @@  instance Pretty Positional1 where   pretty p = case p.unwrap of-    PositionalSwitch f -> case f of-      Flag c _ -> pretty c-      GNUFlag {} -> pretty $ Flag1 f+    PositionalSwitch f -> pretty $ Flag1 f     PositionalOption o -> pretty $ Option1 o     PositionalArgument a -> pretty a
src/Mdoc/Examples/Docker.hs view
@@ -16,18 +16,18 @@  {- FOURMOLU_DISABLE -} dockerOpt :: OptEnvConf.Parser ()-dockerOpt = void $ (,,,,,,,,,,,)-  <$> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.long "config",                          OptEnvConf.metavar "string", OptEnvConf.help "Location of client config files", OptEnvConf.value "~/.docker"])-  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.short 'c', OptEnvConf.long "context",   OptEnvConf.metavar "string", OptEnvConf.help "Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with \"docker context use\")"])-  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.switch True, OptEnvConf.value False, OptEnvConf.short 'D', OptEnvConf.long "debug",                            OptEnvConf.help "Enable debug mode"])-  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.short 'H', OptEnvConf.long "host",      OptEnvConf.metavar "string", OptEnvConf.help "Daemon socket to connect to"])-  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.short 'l', OptEnvConf.long "log-level", OptEnvConf.metavar "string", OptEnvConf.help "Set the logging level (\"debug\", \"info\", \"warn\", \"error\", \"fatal\")", OptEnvConf.value "info"])-  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.switch True, OptEnvConf.value False, OptEnvConf.long "tls",                                                    OptEnvConf.help "Use TLS; implied by --tlsverify"])-  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.long "tlscacert",                       OptEnvConf.metavar "string", OptEnvConf.help "Trust certs signed only by this CA", OptEnvConf.value "~/.docker/ca.pem"])-  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.long "tlscert",                         OptEnvConf.metavar "string", OptEnvConf.help "Path to TLS certificate file", OptEnvConf.value "~/.docker/cert.pem"])-  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.long "tlskey",                          OptEnvConf.metavar "string", OptEnvConf.help "Path to TLS key file", OptEnvConf.value "~/.docker/key.pem"])-  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.switch True, OptEnvConf.value False, OptEnvConf.long "tlsverify",                                              OptEnvConf.help "Use TLS and verify the remote"])-  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.switch True, OptEnvConf.value False, OptEnvConf.short 'v', OptEnvConf.long "version",                          OptEnvConf.help "Print version information and quit"])+dockerOpt = void $ (,,,,,,,,,,,,)+  <$> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.option, OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.long "config",                          OptEnvConf.metavar "string", OptEnvConf.help "Location of client config files", OptEnvConf.value "~/.docker"])+  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.option, OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.short 'c', OptEnvConf.long "context",   OptEnvConf.metavar "string", OptEnvConf.help "Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with \"docker context use\")"])+  <*> OptEnvConf.setting [OptEnvConf.switch True, OptEnvConf.value False, OptEnvConf.short 'D', OptEnvConf.long "debug",                            OptEnvConf.help "Enable debug mode"]+  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.option, OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.short 'H', OptEnvConf.long "host",      OptEnvConf.metavar "string", OptEnvConf.help "Daemon socket to connect to"])+  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.option, OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.short 'l', OptEnvConf.long "log-level", OptEnvConf.metavar "string", OptEnvConf.help "Set the logging level (\"debug\", \"info\", \"warn\", \"error\", \"fatal\")", OptEnvConf.value "info"])+  <*> OptEnvConf.setting [OptEnvConf.switch True, OptEnvConf.value False, OptEnvConf.long "tls",                                                    OptEnvConf.help "Use TLS; implied by --tlsverify"]+  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.option, OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.long "tlscacert",                       OptEnvConf.metavar "string", OptEnvConf.help "Trust certs signed only by this CA", OptEnvConf.value "~/.docker/ca.pem"])+  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.option, OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.long "tlscert",                         OptEnvConf.metavar "string", OptEnvConf.help "Path to TLS certificate file", OptEnvConf.value "~/.docker/cert.pem"])+  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.option, OptEnvConf.reader (OptEnvConf.str @Text), OptEnvConf.long "tlskey",                          OptEnvConf.metavar "string", OptEnvConf.help "Path to TLS key file", OptEnvConf.value "~/.docker/key.pem"])+  <*> OptEnvConf.setting [OptEnvConf.switch True, OptEnvConf.value False, OptEnvConf.long "tlsverify",                                              OptEnvConf.help "Use TLS and verify the remote"]+  <*> OptEnvConf.setting [OptEnvConf.switch True, OptEnvConf.value False, OptEnvConf.short 'v', OptEnvConf.long "version",                          OptEnvConf.help "Print version information and quit"]   <*> OptEnvConf.commands     [ OptEnvConf.command "run"  "Create and run a new container from an image" runOpt     , OptEnvConf.command "exec" "Execute a command in a running container" execOpt
src/Mdoc/Examples/OptEnvConf.hs view
@@ -64,14 +64,18 @@     & name "examplerc" "opt-env-conf example config"  {- FOURMOLU_DISABLE -}-exampleParser :: OptEnvConf.Parser (Bool, Bool, Text, Text, [Text])-exampleParser = (,,,,)+exampleParser :: OptEnvConf.Parser ()+exampleParser = void $ (,,,,,)   <$> OptEnvConf.setting [OptEnvConf.env "DEBUG", OptEnvConf.conf "debug", OptEnvConf.switch True, OptEnvConf.long "debug", OptEnvConf.help "Enable debug", OptEnvConf.value False       , OptEnvConf.example "# enable debug"       , OptEnvConf.example "debug: true"       ]   <*> OptEnvConf.setting [OptEnvConf.conf "verbose", OptEnvConf.switch True, OptEnvConf.short 'v', OptEnvConf.long "verbose", OptEnvConf.value False]-  <*> OptEnvConf.setting [OptEnvConf.env "INPUT", OptEnvConf.option, OptEnvConf.reader OptEnvConf.str, OptEnvConf.short 'i', OptEnvConf.metavar "INPUT"]-  <*> OptEnvConf.setting [OptEnvConf.conf "file", OptEnvConf.argument, OptEnvConf.reader OptEnvConf.str, OptEnvConf.metavar "FILE"]-  <*> OptEnvConf.many (OptEnvConf.setting [OptEnvConf.argument, OptEnvConf.reader OptEnvConf.str, OptEnvConf.metavar "FILE"])+  <*>+    (   OptEnvConf.setting [OptEnvConf.switch True, OptEnvConf.short 'a', OptEnvConf.long "apple", OptEnvConf.value False, OptEnvConf.help "Use apples"]+    <|> OptEnvConf.setting [OptEnvConf.switch True, OptEnvConf.short 'b', OptEnvConf.long "banana", OptEnvConf.value False, OptEnvConf.help "Use bananas"]+    )+  <*> OptEnvConf.optional (OptEnvConf.setting [OptEnvConf.env "INPUT", OptEnvConf.option, OptEnvConf.reader $ OptEnvConf.str @Text, OptEnvConf.short 'i', OptEnvConf.metavar "INPUT"])+  <*> OptEnvConf.setting [OptEnvConf.conf "file", OptEnvConf.argument, OptEnvConf.reader $ OptEnvConf.str @Text, OptEnvConf.metavar "FILE"]+  <*> OptEnvConf.many (OptEnvConf.setting [OptEnvConf.argument, OptEnvConf.reader $ OptEnvConf.str @Text, OptEnvConf.metavar "FILE"]) {- FOURMOLU_ENABLE -}
src/OptEnvConf/Mdoc.hs view
@@ -8,6 +8,38 @@ -- Portability : POSIX -- -- See "Mdoc.Examples.OptEnvConf".+--+-- == Limitations+--+-- "OptEnvConf" uses an /or Nothing/ pattern for both 'optional' and+-- 'some'/'many' cases (unlike @optparse-applicative@, which introduces+-- 'BindNode' specifically to distinguish the latter case.)+--+-- This means we cannot tell the difference and have to decide if this should+-- result in processing that option as optional (showing @[x]@), multiple+-- (showing @x ...@), or both (showing @[x ...]@).+--+-- We cannot get this right, because "OptEnvConf" does not encode the+-- difference. It never includes @...@ in its rendered help or man-pages, so it+-- doesn't need to.+--+-- Therefore, we code for the following outcomes:+--+-- +------------+-----------------+------------------+----------++-- | Modifier   | Positional type | Result           | Correct? |+-- +============+=================+==================+==========++-- | 'optional' | option          | @[option]@       | yes      |+-- +------------+-----------------+------------------+----------++-- | 'optional' | argument        | @[argument ...]@ | no       |+-- +------------+-----------------+------------------+----------++-- | 'many'     | option          | @[option]@       | no       |+-- +------------+-----------------+------------------+----------++-- | 'many'     | argument        | @argument ...@   | yes      |+-- +------------+-----------------+------------------+----------++--+-- Any behavior here is wrong; we do this primarily because a @SYNOPSIS@ with a+-- final @[file ...]@ argument is so common that we would like to render that+-- case in particular correctly. module OptEnvConf.Mdoc   ( getPage   ) where@@ -105,10 +137,9 @@     pure $ addCommands (zipWith getCommand [1 ..] cdocs) acc   AnyDocsAnd ds -> foldM (foldSetDocsM f) acc ds   AnyDocsOr [d] -> foldSetDocsM f acc d-  -- Optionality represented as "<|> Nothing"-  AnyDocsOr [d, AnyDocsSingle Nothing] -> foldSetDocsM fForOr acc d+  AnyDocsOr [d, AnyDocsSingle Nothing] -> foldSetDocsM fAsOrNothing acc d   AnyDocsOr ds -> do-    sub <- foldM (foldSetDocsM fForOr) mempty $ traceShowId ds+    sub <- foldM (foldSetDocsM f) mempty ds     pure $ addAlternation Optional (getPositionals sub) acc   AnyDocsSingle Nothing -> pure acc -- hidden/internal   AnyDocsSingle (Just d) -> do@@ -124,14 +155,13 @@         , example = exampleMdoc <$> nonEmpty (setDocExamples d)         }  where-  -- This is crazy wrong but I keep adding shit based on test cases-  fForOr i m d =+  fAsOrNothing i m d =     f i m       $ d         { optionality = case d.optionality of             Required -> Optional             o -> o-        , multiple = null $ setDocDasheds d.item+        , multiple = setDocTryArgument d.item         }  exampleMdoc :: NonEmpty String -> Mdoc