packages feed

opt-env-conf 0.4.0.4 → 0.4.0.5

raw patch · 4 files changed

+66/−29 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ OptEnvConf.Doc: [confDocExamples] :: ConfDoc -> ![String]
+ OptEnvConf.Doc: [envDocExamples] :: EnvDoc -> ![String]
+ OptEnvConf.Doc: [optDocExamples] :: OptDoc -> ![String]
+ OptEnvConf.Doc: [setDocExamples] :: SetDoc -> ![String]
+ OptEnvConf.Output: exampleValuesChunks :: [String] -> [Chunk]
- OptEnvConf.Doc: ConfDoc :: !NonEmpty (NonEmpty String, JSONSchema) -> !Maybe String -> !Maybe String -> ConfDoc
+ OptEnvConf.Doc: ConfDoc :: !NonEmpty (NonEmpty String, JSONSchema) -> !Maybe String -> ![String] -> !Maybe String -> ConfDoc
- OptEnvConf.Doc: EnvDoc :: !NonEmpty String -> !Maybe String -> !Maybe Metavar -> !Maybe String -> EnvDoc
+ OptEnvConf.Doc: EnvDoc :: !NonEmpty String -> !Maybe String -> ![String] -> !Maybe Metavar -> !Maybe String -> EnvDoc
- OptEnvConf.Doc: OptDoc :: !Bool -> !Bool -> !Bool -> ![Dashed] -> !Maybe String -> !Maybe Metavar -> !Maybe String -> OptDoc
+ OptEnvConf.Doc: OptDoc :: !Bool -> !Bool -> !Bool -> ![Dashed] -> !Maybe String -> ![String] -> !Maybe Metavar -> !Maybe String -> OptDoc
- OptEnvConf.Doc: SetDoc :: !Bool -> !Bool -> !Bool -> ![Dashed] -> !Maybe (NonEmpty String) -> !Maybe (NonEmpty (NonEmpty String, JSONSchema)) -> !Maybe String -> !Maybe Metavar -> !Maybe String -> SetDoc
+ OptEnvConf.Doc: SetDoc :: !Bool -> !Bool -> !Bool -> ![Dashed] -> !Maybe (NonEmpty String) -> !Maybe (NonEmpty (NonEmpty String, JSONSchema)) -> !Maybe String -> ![String] -> !Maybe Metavar -> !Maybe String -> SetDoc

Files

CHANGELOG.md view
@@ -1,5 +1,11 @@ # Changelog +## [0.4.0.5] - 2024-07-28++### Added++* Documentation now shows example values and default values.+ ## [0.4.0.4] - 2024-07-28  ### Added
opt-env-conf.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           opt-env-conf-version:        0.4.0.4+version:        0.4.0.5 synopsis:       Settings parsing for Haskell: command-line arguments, environment variables, and configuration values. homepage:       https://github.com/NorfairKing/opt-env-conf#readme bug-reports:    https://github.com/NorfairKing/opt-env-conf/issues
src/OptEnvConf/Doc.hs view
@@ -63,6 +63,7 @@     setDocEnvVars :: !(Maybe (NonEmpty String)),     setDocConfKeys :: !(Maybe (NonEmpty (NonEmpty String, JSONSchema))),     setDocDefault :: !(Maybe String),+    setDocExamples :: ![String],     setDocMetavar :: !(Maybe Metavar),     setDocHelp :: !(Maybe String)   }@@ -74,6 +75,7 @@     optDocTryOption :: !Bool,     optDocDasheds :: ![Dashed],     optDocDefault :: !(Maybe String),+    optDocExamples :: ![String],     optDocMetavar :: !(Maybe Metavar),     optDocHelp :: !(Maybe String)   }@@ -82,6 +84,7 @@ data EnvDoc = EnvDoc   { envDocVars :: !(NonEmpty String),     envDocDefault :: !(Maybe String),+    envDocExamples :: ![String],     envDocMetavar :: !(Maybe Metavar),     envDocHelp :: !(Maybe String)   }@@ -90,6 +93,7 @@ data ConfDoc = ConfDoc   { confDocKeys :: !(NonEmpty (NonEmpty String, JSONSchema)),     confDocDefault :: !(Maybe String),+    confDocExamples :: ![String],     confDocHelp :: !(Maybe String)   }   deriving (Show)@@ -189,6 +193,7 @@           )           <$> settingConfigVals   let setDocDefault = snd <$> settingDefaultValue+  let setDocExamples = settingExamples   let setDocMetavar = settingMetavar   let setDocHelp = settingHelp   pure SetDoc {..}@@ -210,7 +215,13 @@ renderSetDocWithoutHeader :: SetDoc -> [[Chunk]] renderSetDocWithoutHeader SetDoc {..} =   concat-    [ [ unwordsChunks+    [ [ defaultValueChunks dv+        | dv <- maybeToList setDocDefault+      ],+      [ exampleValuesChunks setDocExamples+        | not (null setDocExamples)+      ],+      [ unwordsChunks           [ ["argument:"],             [mMetavarChunk setDocMetavar]           ]@@ -531,6 +542,7 @@       optDocTryOption = setDocTryOption       optDocDasheds = setDocDasheds       optDocDefault = setDocDefault+      optDocExamples = setDocExamples       optDocMetavar = setDocMetavar       optDocHelp = setDocHelp   pure OptDoc {..}@@ -605,17 +617,20 @@  renderOptDocLong :: OptDoc -> [[Chunk]] renderOptDocLong OptDoc {..} =-  [ unwordsChunks $-      concat-        [ maybeToList $ dashedChunks optDocDasheds,-          [ [ mMetavarChunk optDocMetavar-            ]-            | optDocTryArgument-          ]-        ],-    [mHelpChunk optDocHelp],-    unwordsChunks [defaultValueChunks d | d <- maybeToList optDocDefault]-  ]+  concat+    [ [ unwordsChunks $+          concat+            [ maybeToList $ dashedChunks optDocDasheds,+              [ [ mMetavarChunk optDocMetavar+                ]+                | optDocTryArgument+              ]+            ],+        [mHelpChunk optDocHelp]+      ],+      [defaultValueChunks d | d <- maybeToList optDocDefault],+      [exampleValuesChunks optDocExamples | not (null optDocExamples)]+    ]  parserEnvDocs :: Parser a -> AnyDocs EnvDoc parserEnvDocs = docsToEnvDocs . parserDocs@@ -627,6 +642,7 @@ setDocEnvDoc SetDoc {..} = do   envDocVars <- setDocEnvVars   let envDocDefault = setDocDefault+  let envDocExamples = setDocExamples   let envDocMetavar = setDocMetavar   let envDocHelp = setDocHelp   pure EnvDoc {..}@@ -647,13 +663,17 @@  renderEnvDoc :: EnvDoc -> [[Chunk]] renderEnvDoc EnvDoc {..} =-  [ unwordsChunks-      [ envVarChunksNE envDocVars,-        [ mMetavarChunk envDocMetavar-        ]+  concat+    [ [ unwordsChunks+          [ envVarChunksNE envDocVars,+            [ mMetavarChunk envDocMetavar+            ]+          ],+        [mHelpChunk envDocHelp]       ],-    [mHelpChunk envDocHelp]-  ]+      [defaultValueChunks d | d <- maybeToList envDocDefault],+      [exampleValuesChunks envDocExamples | not (null envDocExamples)]+    ]  parserConfDocs :: Parser a -> AnyDocs ConfDoc parserConfDocs = docsToConfDocs . parserDocs@@ -665,6 +685,7 @@ setDocConfDoc SetDoc {..} = do   confDocKeys <- setDocConfKeys   let confDocDefault = setDocDefault+  let confDocExamples = setDocExamples   let confDocHelp = setDocHelp   pure ConfDoc {..} @@ -691,13 +712,17 @@  renderConfDoc :: ConfDoc -> [[Chunk]] renderConfDoc ConfDoc {..} =-  [mHelpChunk confDocHelp]-    : concatMap-      ( \(key, schema) ->-          case jsonSchemaChunkLines schema of-            [line] ->-              [[confValChunk key, ": "] ++ line]-            ls ->-              [confValChunk key, ":"] : indent ls-      )-      (NE.toList confDocKeys)+  concat+    [ [[mHelpChunk confDocHelp]],+      [defaultValueChunks d | d <- maybeToList confDocDefault],+      [exampleValuesChunks confDocExamples | not (null confDocExamples)],+      concatMap+        ( \(key, schema) ->+            case jsonSchemaChunkLines schema of+              [line] ->+                [[confValChunk key, ": "] ++ line]+              ls ->+                [confValChunk key, ":"] : indent ls+        )+        (NE.toList confDocKeys)+    ]
src/OptEnvConf/Output.hs view
@@ -59,6 +59,12 @@ defaultValueChunks :: String -> [Chunk] defaultValueChunks val = ["default: ", fore yellow $ chunk $ T.pack val] +exampleValuesChunks :: [String] -> [Chunk]+exampleValuesChunks vals = case vals of+  [] -> []+  [val] -> ["example: ", fore yellow $ chunk $ T.pack val]+  _ -> ["examples: ", fore yellow $ chunk $ T.intercalate ", " $ map (T.pack . show) vals]+ mHelpChunk :: Maybe Help -> Chunk mHelpChunk = maybe (fore red "undocumented") helpChunk