mdoc-0.1.0.0: src/Mdoc/Gen/Man1.hs
-- |
--
-- Module : Mdoc.Gen.Man1
-- Copyright : (c) 2026 Patrick Brisbin
-- License : AGPL-3
-- Maintainer : pbrisbin@gmail.com
-- Stability : experimental
-- Portability : POSIX
module Mdoc.Gen.Man1
( Man1 (..)
, baseMan1
-- * Manual modification
, addFile
, addCrossRef
, addExitStatus
) where
import Mdoc.Prelude
import Mdoc.Gen.Argument
import Mdoc.Gen.CrossRef
import Mdoc.Gen.Described
import Mdoc.Gen.EnvVar
import Mdoc.Gen.ExitStatus
import Mdoc.Gen.File
import Mdoc.Gen.Flag
import Mdoc.Gen.Name
import Mdoc.Gen.Option
import Mdoc.Optics
data Man1 = Man1
{ name :: Name
, switches :: [Described Flag]
, options :: [Described Option]
, arguments :: [Described Argument]
, environment :: [Described EnvVar]
, files :: [File]
, exitStatus :: Maybe (NonEmpty NonZeroStatus)
, seeAlso :: [CrossRef]
}
deriving stock (Eq, Generic, Show)
baseMan1 :: String -> String -> Man1
baseMan1 name nameDescription =
Man1
{ name =
Name
{ primary = name
, secondaries = []
, description = nameDescription
}
, switches = []
, options = []
, arguments = []
, environment = []
, files = []
, exitStatus = Nothing
, seeAlso = []
}
addFile :: FilePath -> Maybe String -> Man1 -> Man1
addFile path description = field @"files" <>~ [File {path, description}]
addCrossRef :: String -> Int -> Man1 -> Man1
addCrossRef name section = field @"seeAlso" <>~ [CrossRef {name, section}]
addExitStatus :: NonZeroStatus -> Man1 -> Man1
addExitStatus nz = field @"exitStatus" %~ Just . maybe (pure nz) (<> pure nz)