{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE LambdaCase #-} module Distribution.Client.ManpageFlags ( ManpageFlags (..) , defaultManpageFlags , manpageOptions, ) where import Distribution.Client.Compat.Prelude import Distribution.Simple.Command (OptionField (..), ShowOrParseArgs (..), option) import Distribution.Simple.Setup (Flag (..), toFlag, trueArg, optionVerbosity) import Distribution.Verbosity (normal) data ManpageFlags = ManpageFlags { manpageVerbosity :: Flag Verbosity , manpageRaw :: Flag Bool } deriving (Eq, Show, Generic) instance Monoid ManpageFlags where mempty = gmempty mappend = (<>) instance Semigroup ManpageFlags where (<>) = gmappend defaultManpageFlags :: ManpageFlags defaultManpageFlags = ManpageFlags { manpageVerbosity = toFlag normal , manpageRaw = toFlag False } manpageOptions :: ShowOrParseArgs -> [OptionField ManpageFlags] manpageOptions _ = [ optionVerbosity manpageVerbosity (\v flags -> flags { manpageVerbosity = v }) , option "" ["raw"] "Output raw troff content" manpageRaw (\v flags -> flags { manpageRaw = v }) trueArg ]