cabal2nix-1.11: src/Distribution/NixOS/Derivation/Meta.hs
module Distribution.NixOS.Derivation.Meta
( Meta(..)
, module Distribution.NixOS.Derivation.License
)
where
import Distribution.NixOS.Derivation.PrettyPrinting
import Distribution.NixOS.Derivation.License
import Distribution.Text
import Text.PrettyPrint
data Meta = Meta
{ homepage :: String
, description :: String
, license :: License
, platforms :: [String]
, maintainers :: [String]
}
deriving (Show, Eq, Ord)
instance Text Meta where
disp = renderMeta
parse = error "parsing Distribution.NixOS.Derivation.Cabal.Meta is not supported yet"
renderMeta :: Meta -> Doc
renderMeta meta = vcat
[ text "meta" <+> equals <+> lbrace
, nest 2 $ vcat
[ onlyIf (homepage meta) $ attr "homepage" $ string (homepage meta)
, onlyIf (description meta) $ attr "description" $ string (description meta)
, attr "license" $ disp (license meta)
, onlyIf (platforms meta) $ sep
[ text "platforms" <+> equals
, nest 2 ((fsep $ punctuate (text " ++") $ map text (platforms meta))) <> semi
]
, listattr "maintainers" (maintainers meta)
]
, rbrace <> semi
]