packages feed

mdoc-0.2.0.0: src/Env/Mdoc.hs

-- |
--
-- Module      : Env.Mdoc
-- Copyright   : (c) 2026 Patrick Brisbin
-- License     : AGPL-3
-- Maintainer  : pbrisbin@gmail.com
-- Stability   : experimental
-- Portability : POSIX
--
-- See "Mdoc.Examples.Grep".
module Env.Mdoc
  ( getPage
  ) where

import Mdoc.Prelude

import Env.Internal.Free
import Env.Internal.Parser
import Mdoc.Data.Described
import Mdoc.Data.EnvVar
import Mdoc.Data.Optionality
import Mdoc.Data.Page

getPage :: Parser e a -> Page
getPage = flip appEndo mempty . foldAlt (Endo . addEnvVar . describeVarF) . unParser

describeVarF :: VarF e a -> Described EnvVar
describeVarF v =
  Described
    { item = EnvVar {names = pure $ varfName v, argument = Nothing}
    , optionality = maybe Required Defaulted (varfHelpDef v)
    , multiple = False
    , help = textToMdoc . pack =<< varfHelp v
    }