cabal-version: 2.4
name: gitlab-haskell
category: Git
version: 0.2.5
synopsis: A Haskell library for the GitLab web API
description:
This Haskell library queries and updates the database of a GitLab instance using the GitLab web API:
.
It also features an API for writing Gitlab file hook applications
.
Run all GitLab actions with `runGitLab`:
.
> runGitLab ::
> => GitLabServerConfig -- ^ the GitLab server details
> -> GitLab a -- ^ the GitLab action
> -> IO 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 (Maybe User)
> userProjects :: User -> GitLab (Maybe [Project])
> projectCommits :: Project -> GitLab [Commit]
.
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:
.
Unsurprisingly, this library is maintained on GitLab:
homepage: https://gitlab.com/robstewart57/gitlab-haskell
bug-reports: https://gitlab.com/robstewart57/gitlab-haskell/issues
author: Rob Stewart
maintainer: robstewart57@gmail.com
copyright: 2020 Rob Stewart, Heriot-Watt University
license: BSD-3-Clause
license-file: LICENSE
data-files: data/system-hooks/*.json
build-type: Simple
extra-source-files:
README.md
source-repository head
type: git
location: https://gitlab.com/robstewart57/gitlab-haskell
library
exposed-modules:
GitLab
, GitLab.Types
, GitLab.API.Groups
, GitLab.API.Members
, GitLab.API.Commits
, GitLab.API.Projects
, GitLab.API.Users
, GitLab.API.Issues
, GitLab.API.Pipelines
, GitLab.API.Branches
, GitLab.API.Jobs
, GitLab.API.Repositories
, GitLab.API.MergeRequests
, GitLab.API.RepositoryFiles
, GitLab.API.Todos
, GitLab.API.Version
, GitLab.API.Notes
, GitLab.SystemHooks.Types
, GitLab.SystemHooks.GitLabSystemHooks
, GitLab.SystemHooks.Rules
other-modules:
GitLab.WebRequests.GitLabWebCalls
hs-source-dirs:
src
build-depends:
base >=4.7 && <5
, http-conduit
, connection
, aeson >= 1.4.4.0
, bytestring
, text
, http-types
, transformers
, unliftio
, unliftio-core
, time
, temporary
, unix
default-language: Haskell2010
ghc-options: -Wall
-- the following two for the stan static analysis tool
-- -fwrite-ide-info
-- -hiedir=.hie
test-suite test-gitlab-haskell
type: exitcode-stdio-1.0
main-is: Tests.hs
other-modules: SystemHookTests
hs-source-dirs: tests/
default-language: Haskell2010
build-depends: base >= 4.8.0.0 && < 6
, tasty
, tasty-hunit
, gitlab-haskell
, bytestring
, aeson