@hackage gitlab-haskell0.2

A Haskell library for the GitLab web API

This Haskell library queries and updates the database of a GitLab instance using the GitLab web API: https://docs.gitlab.com/ee/api/

It also features an API for writing Gitlab file hook applications

Run all GitLab actions with runGitLab:

runGitLab :: (MonadUnliftIO m, MonadIO m)
 => GitLabServerConfig -- ^ the GitLab server details
 -> GitLab m a         -- ^ the GitLab action
 -> m a

For example:

myProjects <- runGitLab
     (defaultGitLabServer
         { url = "https://gitlab.example.com"
         , token="my_token"} )
     (searchUser "joe" >>= userProjects . fromJust)

Which uses the functions:

searchUser   :: Text -> GitLab m (Maybe User)
userProjects :: User -> GitLab m (Maybe [Project])

This library can also be used to develop rule based GitLab file hooks that react in real time to GitLab events with:

receive :: [Rule] -> GitLab ()
class (FromJSON a) => SystemHook a where
  match   :: String -> (a -> GitLab ()) -> Rule
  matchIf :: String -> (a -> GitLab Bool) -> (a -> GitLab ()) -> Rule

For more details about the file hooks support: https://www.macs.hw.ac.uk/~rs46/posts/2020-06-06-gitlab-system-hooks.html

Unsurprisingly, this library is maintained on GitLab: https://gitlab.com/robstewart57/gitlab-haskell