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 +6/−0
- opt-env-conf.cabal +1/−1
- src/OptEnvConf/Doc.hs +53/−28
- src/OptEnvConf/Output.hs +6/−0
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