module Fedora.Copr.CoprProject (
CoprProject (..)
, NewCoprResponse (..)) where
import Control.Applicative
import Control.Monad (mzero)
import Data.Aeson
import qualified Data.List.NonEmpty as NEL
import qualified Data.Text as T
data NewCoprResponse = NewCoprResponse {
output :: String
, message :: Maybe String
, error :: Maybe String
} deriving (Eq, Show)
instance FromJSON NewCoprResponse where
parseJSON (Object v) = NewCoprResponse <$>
v .: "output"
<*> v .:? "message"
<*> v .:? "error"
parseJSON _ = mzero
data CoprProject = CoprProject {
name :: T.Text
, repos :: [T.Text]
, initialPackages :: [T.Text]
, chroots :: NEL.NonEmpty T.Text
, description :: Maybe T.Text
, instructions :: Maybe T.Text
} deriving (Eq, Show)
instance ToJSON CoprProject where
toJSON (CoprProject n r p c d i) = object $ [ "name" .= n
, "repos" .= T.intercalate " " r
, "initial_pkgs" .= T.intercalate " " p
, "description" .= d
, "instructions" .= i
] ++ map (\x -> x .= T.pack "y") (NEL.toList c)