packages feed

ronn-envparse (empty) → 1.0.0.0

raw patch · 6 files changed

+205/−0 lines, 6 filesdep +basedep +envparsedep +filepath

Dependencies added: base, envparse, filepath, hspec, hspec-golden, ronn, ronn-envparse, text

Files

+ CHANGELOG.md view
@@ -0,0 +1,5 @@+## [_Unreleased_](https://github.com/pbrisbin/ronn/compare/ronn-envparse-v1.0.0.0...main)++## [v1.0.0.0](https://github.com/pbrisbin/ronn/tree/ronn-envparse-v1.0.0.0)++First tagged pre-release.
+ README.md view
@@ -0,0 +1,18 @@+# `ronn-envparse`++[![Hackage](https://img.shields.io/hackage/v/ronn-envparse.svg?style=flat)](https://hackage.haskell.org/package/ronn-envparse)+[![Stackage Nightly](http://stackage.org/package/ronn-envparse/badge/nightly)](http://stackage.org/nightly/package/ronn-envparse)+[![Stackage LTS](http://stackage.org/package/ronn-envparse/badge/lts)](http://stackage.org/lts/package/ronn-envparse)++Automatically create a `Ronn` value from `Env.Parser`.++## Usage++See [the test][test] and [the result][golden].++[test]: ./ronn-envparse/tests/Ronn/EnvSpec.hs+[golden]: ./doc/ronn-envparse.1.ronn++---++[CHANGELOG](./ronn-envparse/CHANGELOG.md)
+ ronn-envparse.cabal view
@@ -0,0 +1,83 @@+cabal-version:   1.18+name:            ronn-envparse+version:         1.0.0.0+license:         AGPL-3+maintainer:      Pat Brisbin+homepage:        https://github.com/pbrisbin/ronn#readme+bug-reports:     https://github.com/pbrisbin/ronn/issues+synopsis:        Produce Ronn from OptEnvConf+description:     Please see README.md+category:        Documentation+build-type:      Simple+extra-doc-files:+    README.md+    CHANGELOG.md++source-repository head+    type:     git+    location: https://github.com/pbrisbin/ronn++library+    exposed-modules:    Ronn.Env+    hs-source-dirs:     src+    other-modules:      Paths_ronn_envparse+    default-language:   GHC2021+    default-extensions:+        DataKinds DeriveAnyClass DerivingStrategies DerivingVia+        DuplicateRecordFields GADTs LambdaCase NoFieldSelectors+        NoImplicitPrelude NoMonomorphismRestriction OverloadedRecordDot+        OverloadedStrings RecordWildCards TypeFamilies++    ghc-options:+        -fignore-optim-changes -fwrite-ide-info -Weverything+        -Wno-all-missed-specialisations -Wno-missing-exported-signatures+        -Wno-missing-import-lists -Wno-missing-kind-signatures+        -Wno-missing-local-signatures -Wno-missing-safe-haskell-mode+        -Wno-monomorphism-restriction -Wno-prepositive-qualified-module+        -Wno-safe -Wno-unsafe++    build-depends:+        base >=4.16.4.0 && <5,+        envparse >=0.5.0,+        ronn >=1.1.0.0++    if impl(ghc >=9.8)+        ghc-options:+            -Wno-missing-role-annotations -Wno-missing-poly-kind-signatures++test-suite spec+    type:               exitcode-stdio-1.0+    main-is:            Main.hs+    hs-source-dirs:     tests+    other-modules:+        Ronn.EnvSpec+        Paths_ronn_envparse++    default-language:   GHC2021+    default-extensions:+        DataKinds DeriveAnyClass DerivingStrategies DerivingVia+        DuplicateRecordFields GADTs LambdaCase NoFieldSelectors+        NoImplicitPrelude NoMonomorphismRestriction OverloadedRecordDot+        OverloadedStrings RecordWildCards TypeFamilies++    ghc-options:+        -fignore-optim-changes -fwrite-ide-info -Weverything+        -Wno-all-missed-specialisations -Wno-missing-exported-signatures+        -Wno-missing-import-lists -Wno-missing-kind-signatures+        -Wno-missing-local-signatures -Wno-missing-safe-haskell-mode+        -Wno-monomorphism-restriction -Wno-prepositive-qualified-module+        -Wno-safe -Wno-unsafe -threaded -rtsopts -with-rtsopts=-N++    build-depends:+        base >=4.16.4.0 && <5,+        envparse >=0.5.0,+        filepath >=1.4.2.2,+        hspec >=2.9.7,+        hspec-golden >=0.2.1.0,+        ronn >=1.1.0.0,+        ronn-envparse,+        text >=1.2.5.0++    if impl(ghc >=9.8)+        ghc-options:+            -Wno-missing-role-annotations -Wno-missing-poly-kind-signatures
+ src/Ronn/Env.hs view
@@ -0,0 +1,33 @@+-- |+--+-- Module      : Ronn.Env+-- Copyright   : (c) 2024 Patrick Brisbin+-- License     : AGPL-3+-- Maintainer  : pbrisbin@gmail.com+-- Stability   : experimental+-- Portability : POSIX+module Ronn.Env+  ( envDefinitions+  ) where++import Prelude++import Data.String (IsString (..))+import Env (Parser)+import Env.Internal.Help (helpDoc)+import Ronn.AST++envDefinitions :: Parser e a -> [Definition]+envDefinitions = map fromHelpLine . drop 2 . lines . helpDoc++fromHelpLine :: String -> Definition+fromHelpLine x =+  Definition+    { name+    , description = Line [help]+    , content = Nothing+    }+ where+  (name, help) = case words x of+    (y : ys) -> (fromString y, fromString $ unwords ys)+    _ -> ("", "(error: envparse helpline was empty)")
+ tests/Main.hs view
@@ -0,0 +1,9 @@+-- |+--+-- Module      : Main+-- Copyright   : (c) 2024 Patrick Brisbin+-- License     : AGPL-3+-- Maintainer  : pbrisbin@gmail.com+-- Stability   : experimental+-- Portability : POSIX+{-# OPTIONS_GHC -F -pgmF hspec-discover -Wno-missing-export-lists #-}
+ tests/Ronn/EnvSpec.hs view
@@ -0,0 +1,57 @@+-- |+--+-- Module      : Ronn.EnvSpec+-- Copyright   : (c) 2024 Patrick Brisbin+-- License     : AGPL-3+-- Maintainer  : pbrisbin@gmail.com+-- Stability   : experimental+-- Portability : POSIX+module Ronn.EnvSpec+  ( spec+  ) where++import Prelude++import Data.Text (Text, unpack)+import Data.Text.IO qualified as T+import Env+import Ronn+import Ronn.Env+import System.FilePath ((</>))+import Test.Hspec+import Test.Hspec.Golden++spec :: Spec+spec = do+  specify "complete example" $+    let+      p :: Parser Error (Maybe Bool, FilePath, FilePath)+      p =+        (,,)+          <$> optional (switch "DEBUG" $ help "Enable debug")+          <*> var nonempty "OUTPUT" (help "Output file" <> def "-")+          <*> var nonempty "INPUT" (help "Input file")+    in+      ronnGolden $+        Ronn+          { name = ManRef "ronn-envparse" ManSection1+          , description = ["example Ronn from envparse"]+          , sections =+              [ Section+                  { name = "ENVIRONMENT"+                  , content = [Definitions $ envDefinitions p]+                  }+              ]+          }++ronnGolden :: Ronn -> Golden Text+ronnGolden ronn =+  Golden+    { output = ronnToText ronn+    , encodePretty = unpack+    , writeToFile = T.writeFile+    , readFromFile = T.readFile+    , goldenFile = "../doc" </> ronnFilePath ronn+    , actualFile = Nothing+    , failFirstTime = False+    }