packages feed

mdoc-0.2.0.0: src/Mdoc/Examples/OptEnvConf.hs

-- |
--
-- Module      : Mdoc.Examples.OptEnvConf
-- Copyright   : (c) 2026 Patrick Brisbin
-- License     : AGPL-3
-- Maintainer  : pbrisbin@gmail.com
-- Stability   : experimental
-- Portability : POSIX
module Mdoc.Examples.OptEnvConf
  ( conf5
  , example1
  , example5
  ) where

import Mdoc.Prelude

import Mdoc.Data.Named
import Mdoc.Data.Page
import Mdoc.Syntax
import OptEnvConf qualified
import OptEnvConf.Mdoc qualified as OptEnvConf

conf5 :: Named
conf5 =
  mempty
    & (<> OptEnvConf.getPage confParser)
    & setSynopsis
      ( Mdoc
          [ MacroLine Bl ["-tag", "-width", "indent", "-compact"]
          , MacroLine It [Callable Pa, "/etc/cron.daily", ","]
          , MacroLine It [Callable Pa, "/etc/cron.hourly", ","]
          , MacroLine It [Callable Pa, "/etc/cron.weekly"]
          , MacroLine El []
          ]
      )
    & name "crontab" "tables for driving cron"

{- FOURMOLU_DISABLE -}
confParser :: OptEnvConf.Parser ()
confParser = void $ (,)
  <$> OptEnvConf.setting [OptEnvConf.conf @String "foo", OptEnvConf.help "Foo's the fooing of fooers"]
  <*> OptEnvConf.subConfig "bar" ((,)
    <$> OptEnvConf.setting [OptEnvConf.conf @Bool "baz", OptEnvConf.help "Bar's baz of bazzle"]
    <*> OptEnvConf.setting [OptEnvConf.conf @[Int] "bat", OptEnvConf.help "Bar's bat is better than that"])
{- FOURMOLU_ENABLE -}

example1 :: Named
example1 =
  mempty
    & (<> OptEnvConf.getPage exampleParser)
    & name "example" "opt-env-conf example"

example5 :: Named
example5 =
  mempty
    & (<> OptEnvConf.getPage exampleParser)
    & setSynopsis
      ( Mdoc
          [ MacroLine Bl ["-tag", "-width", "indent", "-compact"]
          , MacroLine It [Callable Pa, ".examplerc.yaml"]
          , MacroLine El []
          ]
      )
    & name "examplerc" "opt-env-conf example config"

{- FOURMOLU_DISABLE -}
exampleParser :: OptEnvConf.Parser (Bool, Bool, Text, Text, [Text])
exampleParser = (,,,,)
  <$> OptEnvConf.setting [OptEnvConf.env "DEBUG", OptEnvConf.conf "debug", OptEnvConf.switch True, OptEnvConf.long "debug", OptEnvConf.help "Enable debug", OptEnvConf.value False]
  <*> 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"])
{- FOURMOLU_ENABLE -}