on master help sign in
sc-build/src/Data/Tasks/StatusUpdate.hs
40 lines 1.0 kB history raw
1{-# OPTIONS_GHC -Wno-orphans #-}
3module Data.Tasks.StatusUpdate
4 ( StatusUpdate (..),
5 )
6where
8import Colog
9import Control.AppRequestable
10import Control.Task
11import Data.Aeson hiding (Success)
12import qualified Data.Text as T
13import GHC.Generics
14import GitHub
16data StatusUpdate
17 = StatusUpdate
18 { owner :: Name Owner,
19 repoName :: Name Repo,
20 sha :: Name Commit,
21 status :: NewStatus
22 }
23 deriving (Eq, Show, Generic, ToJSON, FromJSON)
25instance FromJSON NewStatus where
26 parseJSON = withObject "NewStatus" $ \v ->
27 NewStatus
28 <$> v .: "state"
29 <*> v .:? "target_url"
30 <*> v .:? "description"
31 <*> v .:? "context"
33instance Task StatusUpdate "update-commit-ci-status" where
34 type TaskMonad StatusUpdate m = (AppRequestable m)
36 performTask StatusUpdate {..} = do
37 response <- appRequest $ createStatusR owner repoName sha status
38 case response of
39 Left err -> logError (T.pack $ show err) >> return Failure
40 Right st -> logDebug (T.pack $ show st) >> return Success