gitlab-haskell: A Haskell library for the GitLab web API

[ bsd3, git, library ] [ Propose Tags ]

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


[Skip to Readme]
Versions [faq] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.2, 0.2.1
Dependencies aeson (>=1.4.4.0), base (>=4.7 && <5), bytestring, connection, http-conduit, http-types, text, time, transformers, unliftio, unliftio-core [details]
License BSD-3-Clause
Copyright 2020 Rob Stewart, Heriot-Watt University
Author Rob Stewart
Maintainer robstewart57@gmail.com
Category Git
Home page https://gitlab.com/robstewart57/gitlab-haskell
Bug tracker https://gitlab.com/robstewart57/gitlab-haskell/issues
Source repo head: git clone https://gitlab.com/robstewart57/gitlab-haskell
Uploaded by RobStewart at 2020-06-28T21:12:07Z
Distributions NixOS:0.2
Downloads 2830 total (46 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2020-06-28 [all 1 reports]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for gitlab-haskell-0.2.1

[back to package description]

A Haskell library for the GitLab web API

This library interacts with a GitLab server's API. It supports queries about and updates to:

  • Branches
  • Commits
  • Groups
  • Issues
  • Jobs
  • Members
  • Merge requests
  • Pipelines
  • Projects
  • Repositories
  • Repository files
  • Users

The library parses JSON results into Haskell data types in the GitLab.Types module.

Example

Run all GitLab actions with runGitLab:

runGitLab ::
  (MonadUnliftIO m, MonadIO m)
   => GitLabServerConfig
   -> GitLab m a
   -> 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])

The gitlab-tools command line tool for bulk GitLab transactions uses this library link.