{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StrictData #-}
module GitLab.API.Projects
(
projects,
project,
projectUsers,
userProjects,
starredProjects,
projectGroups,
createProject,
createProjectForUser,
editProject,
forkProject,
projectForks,
starProject,
unstarProject,
projectStarrers,
archiveProject,
unarchiveProject,
deleteProject,
shareProjectWithGroup,
unshareProjectWithGroup,
importMembersFromProject,
forkRelation,
unforkRelation,
projectsWithName,
projectWithPathAndName,
houseKeeping,
transferProject,
multipleCommitters,
commitsEmailAddresses,
projectOfIssue,
projectCISuccess,
projectDiffs,
addGroupToProject,
defaultProjectAttrs,
defaultProjectSearchAttrs,
ProjectAttrs (..),
ProjectSearchAttrs (..),
EnabledDisabled (..),
AutoDeployStrategy (..),
GitStrategy (..),
ProjectSettingAccessLevel (..),
MergeMethod (..),
SquashOption (..),
)
where
import qualified Data.ByteString.Lazy as BSL
import Data.Either
import Data.List
import Data.Maybe
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import Data.Time.Clock
import GHC.Generics
import GitLab.API.Commits
import GitLab.API.Members
import GitLab.API.Pipelines
import GitLab.API.Users
import GitLab.Types
import GitLab.WebRequests.GitLabWebCalls
import Network.HTTP.Client
import Network.HTTP.Types.URI
projects ::
ProjectSearchAttrs ->
GitLab [Project]
projects :: ProjectSearchAttrs -> GitLab [Project]
projects ProjectSearchAttrs
attrs =
[Project] -> Either (Response ByteString) [Project] -> [Project]
forall b a. b -> Either a b -> b
fromRight ([Char] -> [Project]
forall a. HasCallStack => [Char] -> a
error [Char]
"projects error")
(Either (Response ByteString) [Project] -> [Project])
-> GitLabT IO (Either (Response ByteString) [Project])
-> GitLab [Project]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text
-> [GitLabParam]
-> GitLabT IO (Either (Response ByteString) [Project])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany
Text
"/projects"
(ProjectSearchAttrs -> [GitLabParam]
projectSearchAttrsParams ProjectSearchAttrs
attrs)
project ::
Int ->
GitLab (Either (Response BSL.ByteString) (Maybe Project))
project :: Int -> GitLab (Either (Response ByteString) (Maybe Project))
project Int
pId = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabGetOne Text
urlPath []
where
urlPath :: Text
urlPath =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
pId)
projectUsers ::
Project ->
GitLab (Either (Response BSL.ByteString) [User])
projectUsers :: Project -> GitLab (Either (Response ByteString) [User])
projectUsers Project
prj = do
Int -> GitLab (Either (Response ByteString) [User])
projectUsers' (Project -> Int
project_id Project
prj)
projectUsers' ::
Int ->
GitLab (Either (Response BSL.ByteString) [User])
projectUsers' :: Int -> GitLab (Either (Response ByteString) [User])
projectUsers' Int
pId = do
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) [User])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
urlPath []
where
urlPath :: Text
urlPath =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
pId)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/users"
userProjects' :: Text -> ProjectSearchAttrs -> GitLab (Maybe [Project])
userProjects' :: Text -> ProjectSearchAttrs -> GitLab (Maybe [Project])
userProjects' Text
username ProjectSearchAttrs
attrs = do
Maybe User
userMaybe <- Text -> GitLab (Maybe User)
searchUser Text
username
case Maybe User
userMaybe of
Maybe User
Nothing -> Maybe [Project] -> GitLab (Maybe [Project])
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe [Project]
forall a. Maybe a
Nothing
Just User
usr -> do
Either (Response ByteString) [Project]
result <-
Text
-> [GitLabParam]
-> GitLabT IO (Either (Response ByteString) [Project])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany
(Int -> Text
forall {a}. Show a => a -> Text
urlPath (User -> Int
user_id User
usr))
(ProjectSearchAttrs -> [GitLabParam]
projectSearchAttrsParams ProjectSearchAttrs
attrs)
case Either (Response ByteString) [Project]
result of
Left Response ByteString
_ -> [Char] -> GitLab (Maybe [Project])
forall a. HasCallStack => [Char] -> a
error [Char]
"userProjects' error"
Right [Project]
projs -> Maybe [Project] -> GitLab (Maybe [Project])
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ([Project] -> Maybe [Project]
forall a. a -> Maybe a
Just [Project]
projs)
where
urlPath :: a -> Text
urlPath a
usrId = Text
"/users/" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (a -> [Char]
forall a. Show a => a -> [Char]
show a
usrId) Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/projects"
userProjects :: User -> ProjectSearchAttrs -> GitLab (Maybe [Project])
userProjects :: User -> ProjectSearchAttrs -> GitLab (Maybe [Project])
userProjects User
theUser =
Text -> ProjectSearchAttrs -> GitLab (Maybe [Project])
userProjects' (User -> Text
user_username User
theUser)
starredProjects :: User -> ProjectSearchAttrs -> GitLab [Project]
starredProjects :: User -> ProjectSearchAttrs -> GitLab [Project]
starredProjects User
usr ProjectSearchAttrs
attrs = do
[Project] -> Either (Response ByteString) [Project] -> [Project]
forall b a. b -> Either a b -> b
fromRight ([Char] -> [Project]
forall a. HasCallStack => [Char] -> a
error [Char]
"starredProjects error")
(Either (Response ByteString) [Project] -> [Project])
-> GitLabT IO (Either (Response ByteString) [Project])
-> GitLab [Project]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text
-> [GitLabParam]
-> GitLabT IO (Either (Response ByteString) [Project])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany
( Text
"/users/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (User -> Int
user_id User
usr))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/starred_projects"
)
(ProjectSearchAttrs -> [GitLabParam]
projectSearchAttrsParams ProjectSearchAttrs
attrs)
projectGroups ::
Project ->
GitLab (Either (Response BSL.ByteString) [Group])
projectGroups :: Project -> GitLab (Either (Response ByteString) [Group])
projectGroups Project
prj = do
Int -> GitLab (Either (Response ByteString) [Group])
projectGroups' (Project -> Int
project_id Project
prj)
projectGroups' ::
Int ->
GitLab (Either (Response BSL.ByteString) [Group])
projectGroups' :: Int -> GitLab (Either (Response ByteString) [Group])
projectGroups' Int
gId = do
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) [Group])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
urlPath []
where
urlPath :: Text
urlPath =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
gId)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/groups"
createProject ::
Text ->
Text ->
GitLab (Either (Response BSL.ByteString) (Maybe Project))
createProject :: Text
-> Text -> GitLab (Either (Response ByteString) (Maybe Project))
createProject Text
nameTxt Text
pathTxt = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
newProjectAddr [(ByteString
"name", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
nameTxt)), (ByteString
"path", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
pathTxt))]
where
newProjectAddr :: Text
newProjectAddr :: Text
newProjectAddr =
Text
"/projects"
createProjectForUser ::
User ->
Text ->
GitLab (Either (Response BSL.ByteString) (Maybe Project))
createProjectForUser :: User
-> Text -> GitLab (Either (Response ByteString) (Maybe Project))
createProjectForUser User
usrId Text
nameTxt = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
newProjectAddr [(ByteString
"name", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
nameTxt))]
where
newProjectAddr :: Text
newProjectAddr :: Text
newProjectAddr =
Text
"/projects"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/user/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (User -> [Char]
forall a. Show a => a -> [Char]
show User
usrId)
editProject ::
Project ->
ProjectAttrs ->
GitLab (Either (Response BSL.ByteString) Project)
editProject :: Project
-> ProjectAttrs -> GitLab (Either (Response ByteString) Project)
editProject Project
prj = Int
-> ProjectAttrs -> GitLab (Either (Response ByteString) Project)
editProject' (Project -> Int
project_id Project
prj)
editProject' ::
Int ->
ProjectAttrs ->
GitLab (Either (Response BSL.ByteString) Project)
editProject' :: Int
-> ProjectAttrs -> GitLab (Either (Response ByteString) Project)
editProject' Int
projId ProjectAttrs
attrs = do
let urlPath :: Text
urlPath =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
projId)
Either (Response ByteString) (Maybe Project)
result <-
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPut
Text
urlPath
(ProjectAttrs -> [GitLabParam]
projectAttrsParams ProjectAttrs
attrs)
case Either (Response ByteString) (Maybe Project)
result of
Left Response ByteString
resp -> Either (Response ByteString) Project
-> GitLab (Either (Response ByteString) Project)
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Response ByteString -> Either (Response ByteString) Project
forall a b. a -> Either a b
Left Response ByteString
resp)
Right Maybe Project
Nothing -> [Char] -> GitLab (Either (Response ByteString) Project)
forall a. HasCallStack => [Char] -> a
error [Char]
"editProject error"
Right (Just Project
proj) -> Either (Response ByteString) Project
-> GitLab (Either (Response ByteString) Project)
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Project -> Either (Response ByteString) Project
forall a b. b -> Either a b
Right Project
proj)
forkProject ::
Project ->
GitLab (Either (Response BSL.ByteString) (Maybe Project))
forkProject :: Project -> GitLab (Either (Response ByteString) (Maybe Project))
forkProject Project
prj =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params = []
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/fork"
projectForks ::
Text ->
GitLab (Either (Response BSL.ByteString) [Project])
projectForks :: Text -> GitLabT IO (Either (Response ByteString) [Project])
projectForks Text
projectName = do
let urlPath :: Text
urlPath =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> ByteString -> Text
T.decodeUtf8 (Bool -> ByteString -> ByteString
urlEncode Bool
False (Text -> ByteString
T.encodeUtf8 Text
projectName))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/forks"
Text
-> [GitLabParam]
-> GitLabT IO (Either (Response ByteString) [Project])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
urlPath []
starProject ::
Project ->
GitLab (Either (Response BSL.ByteString) (Maybe Project))
starProject :: Project -> GitLab (Either (Response ByteString) (Maybe Project))
starProject Project
prj =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params = []
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/star"
unstarProject ::
Project ->
GitLab (Either (Response BSL.ByteString) (Maybe Project))
unstarProject :: Project -> GitLab (Either (Response ByteString) (Maybe Project))
unstarProject Project
prj =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params = []
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/unstar"
projectStarrers ::
Project ->
GitLab (Either (Response BSL.ByteString) [Group])
projectStarrers :: Project -> GitLab (Either (Response ByteString) [Group])
projectStarrers Project
prj = do
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) [Group])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany Text
urlPath []
where
urlPath :: Text
urlPath =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/starrers"
archiveProject ::
Project ->
GitLab (Either (Response BSL.ByteString) (Maybe Project))
archiveProject :: Project -> GitLab (Either (Response ByteString) (Maybe Project))
archiveProject Project
prj =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params = []
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/archive"
unarchiveProject ::
Project ->
GitLab (Either (Response BSL.ByteString) (Maybe Project))
unarchiveProject :: Project -> GitLab (Either (Response ByteString) (Maybe Project))
unarchiveProject Project
prj =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params = []
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/unarchive"
deleteProject ::
Project ->
GitLab (Either (Response BSL.ByteString) (Maybe ()))
deleteProject :: Project -> GitLab (Either (Response ByteString) (Maybe ()))
deleteProject Project
prj = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabDelete Text
projAddr []
where
projAddr :: Text
projAddr :: Text
projAddr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
shareProjectWithGroup ::
Int ->
Project ->
AccessLevel ->
GitLab (Either (Response BSL.ByteString) (Maybe Project))
shareProjectWithGroup :: Int
-> Project
-> AccessLevel
-> GitLab (Either (Response ByteString) (Maybe Project))
shareProjectWithGroup Int
groupId Project
prj AccessLevel
access =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[ (ByteString
"group_id", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
groupId)))),
(ByteString
"group_access", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (AccessLevel -> [Char]
forall a. Show a => a -> [Char]
show AccessLevel
access))))
]
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/share"
unshareProjectWithGroup ::
Int ->
Project ->
GitLab (Either (Response BSL.ByteString) (Maybe ()))
unshareProjectWithGroup :: Int -> Project -> GitLab (Either (Response ByteString) (Maybe ()))
unshareProjectWithGroup Int
groupId Project
prj =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabDelete Text
addr []
where
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/share/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
groupId)
importMembersFromProject ::
Project ->
Project ->
GitLab
(Either (Response BSL.ByteString) (Maybe Project))
importMembersFromProject :: Project
-> Project -> GitLab (Either (Response ByteString) (Maybe Project))
importMembersFromProject Project
toPrj Project
fromPrj =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr []
where
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
toPrj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/import_project_members/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
fromPrj))
forkRelation ::
Project ->
Project ->
GitLab
(Either (Response BSL.ByteString) (Maybe Project))
forkRelation :: Project
-> Project -> GitLab (Either (Response ByteString) (Maybe Project))
forkRelation Project
toPrj Project
fromPrj =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr []
where
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
toPrj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/fork/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
fromPrj))
unforkRelation ::
Project ->
GitLab
(Either (Response BSL.ByteString) (Maybe ()))
unforkRelation :: Project -> GitLab (Either (Response ByteString) (Maybe ()))
unforkRelation Project
prj =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe ()))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabDelete Text
addr []
where
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/fork"
projectsWithName ::
Text ->
GitLab [Project]
projectsWithName :: Text -> GitLab [Project]
projectsWithName Text
projectName = do
[Project]
foundProjects <-
[Project] -> Either (Response ByteString) [Project] -> [Project]
forall b a. b -> Either a b -> b
fromRight ([Char] -> [Project]
forall a. HasCallStack => [Char] -> a
error [Char]
"projectsWithName error")
(Either (Response ByteString) [Project] -> [Project])
-> GitLabT IO (Either (Response ByteString) [Project])
-> GitLab [Project]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text
-> [GitLabParam]
-> GitLabT IO (Either (Response ByteString) [Project])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany
Text
"/projects"
[(ByteString
"search", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
projectName))]
[Project] -> GitLab [Project]
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ([Project] -> GitLab [Project]) -> [Project] -> GitLab [Project]
forall a b. (a -> b) -> a -> b
$
(Project -> Bool) -> [Project] -> [Project]
forall a. (a -> Bool) -> [a] -> [a]
filter (\Project
prj -> Text
projectName Text -> Text -> Bool
forall a. Eq a => a -> a -> Bool
== Project -> Text
project_path Project
prj) [Project]
foundProjects
projectWithPathAndName :: Text -> Text -> GitLab (Either (Response BSL.ByteString) (Maybe Project))
projectWithPathAndName :: Text
-> Text -> GitLab (Either (Response ByteString) (Maybe Project))
projectWithPathAndName Text
namespaceFullPath Text
projectName = do
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabGetOne
( Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> ByteString -> Text
T.decodeUtf8
( Bool -> ByteString -> ByteString
urlEncode
Bool
False
( Text -> ByteString
T.encodeUtf8
(Text
namespaceFullPath Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
projectName)
)
)
)
[(ByteString
"statistics", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just ByteString
"true")]
houseKeeping ::
Project ->
GitLab (Either (Response BSL.ByteString) (Maybe Project))
houseKeeping :: Project -> GitLab (Either (Response ByteString) (Maybe Project))
houseKeeping Project
prj =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr []
where
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (Project -> Int
project_id Project
prj))
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/housekeeping"
transferProject ::
Project ->
Text ->
GitLab (Either (Response BSL.ByteString) Project)
transferProject :: Project -> Text -> GitLab (Either (Response ByteString) Project)
transferProject Project
prj = Int -> Text -> GitLab (Either (Response ByteString) Project)
transferProject' (Project -> Int
project_id Project
prj)
transferProject' ::
Int ->
Text ->
GitLab (Either (Response BSL.ByteString) Project)
transferProject' :: Int -> Text -> GitLab (Either (Response ByteString) Project)
transferProject' Int
projId Text
namespaceString = do
let urlPath :: Text
urlPath =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
projId)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/transfer"
Either (Response ByteString) (Maybe Project)
result <-
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe Project))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPut
Text
urlPath
[ (ByteString
"id", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
projId)))),
(ByteString
"namespace", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 Text
namespaceString))
]
case Either (Response ByteString) (Maybe Project)
result of
Left Response ByteString
resp -> Either (Response ByteString) Project
-> GitLab (Either (Response ByteString) Project)
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Response ByteString -> Either (Response ByteString) Project
forall a b. a -> Either a b
Left Response ByteString
resp)
Right Maybe Project
Nothing -> [Char] -> GitLab (Either (Response ByteString) Project)
forall a. HasCallStack => [Char] -> a
error [Char]
"transferProject error"
Right (Just Project
proj) -> Either (Response ByteString) Project
-> GitLab (Either (Response ByteString) Project)
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Project -> Either (Response ByteString) Project
forall a b. b -> Either a b
Right Project
proj)
multipleCommitters :: Project -> GitLab Bool
multipleCommitters :: Project -> GitLab Bool
multipleCommitters Project
prj = do
[Text]
emailAddresses <- Project -> GitLab [Text]
commitsEmailAddresses Project
prj
Bool -> GitLab Bool
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool -> GitLab Bool) -> Bool -> GitLab Bool
forall a b. (a -> b) -> a -> b
$
case [Text] -> [Text]
forall a. Eq a => [a] -> [a]
nub [Text]
emailAddresses of
[] -> Bool
False
[Text
_] -> Bool
False
(Text
_ : [Text]
_) -> Bool
True
commitsEmailAddresses :: Project -> GitLab [Text]
commitsEmailAddresses :: Project -> GitLab [Text]
commitsEmailAddresses Project
prj = do
[Commit]
commits <- Project -> GitLab [Commit]
repoCommits Project
prj
[Text] -> GitLab [Text]
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ((Commit -> Text) -> [Commit] -> [Text]
forall a b. (a -> b) -> [a] -> [b]
map Commit -> Text
commit_author_email [Commit]
commits)
projectOfIssue :: Issue -> GitLab Project
projectOfIssue :: Issue -> GitLab Project
projectOfIssue Issue
iss = do
let prId :: Int
prId = Int -> Maybe Int -> Int
forall a. a -> Maybe a -> a
fromMaybe ([Char] -> Int
forall a. HasCallStack => [Char] -> a
error [Char]
"projectOfIssue error") (Issue -> Maybe Int
issue_project_id Issue
iss)
Either (Response ByteString) (Maybe Project)
result <- Int -> GitLab (Either (Response ByteString) (Maybe Project))
project Int
prId
case Maybe Project
-> Either (Response ByteString) (Maybe Project) -> Maybe Project
forall b a. b -> Either a b -> b
fromRight ([Char] -> Maybe Project
forall a. HasCallStack => [Char] -> a
error [Char]
"projectOfIssue error") Either (Response ByteString) (Maybe Project)
result of
Maybe Project
Nothing -> [Char] -> GitLab Project
forall a. HasCallStack => [Char] -> a
error [Char]
"projectOfIssue error"
Just Project
proj -> Project -> GitLab Project
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Project
proj
projectDiffs :: Project -> Text -> GitLab (Either (Response BSL.ByteString) [Diff])
projectDiffs :: Project -> Text -> GitLab (Either (Response ByteString) [Diff])
projectDiffs Project
proj =
Int -> Text -> GitLab (Either (Response ByteString) [Diff])
projectDiffs' (Project -> Int
project_id Project
proj)
projectDiffs' :: Int -> Text -> GitLab (Either (Response BSL.ByteString) [Diff])
projectDiffs' :: Int -> Text -> GitLab (Either (Response ByteString) [Diff])
projectDiffs' Int
projId Text
commitSha =
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) [Diff])
forall a.
FromJSON a =>
Text -> [GitLabParam] -> GitLab (Either (Response ByteString) [a])
gitlabGetMany
( Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
projId)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/repository/commits/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
commitSha
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/diff/"
)
[]
addGroupToProject ::
Int ->
Int ->
AccessLevel ->
GitLab (Either (Response BSL.ByteString) (Maybe GroupShare))
addGroupToProject :: Int
-> Int
-> AccessLevel
-> GitLab (Either (Response ByteString) (Maybe GroupShare))
addGroupToProject Int
groupId Int
projectId AccessLevel
access =
Text
-> [GitLabParam]
-> GitLab (Either (Response ByteString) (Maybe GroupShare))
forall a.
FromJSON a =>
Text
-> [GitLabParam] -> GitLab (Either (Response ByteString) (Maybe a))
gitlabPost Text
addr [GitLabParam]
params
where
params :: [GitLabParam]
params :: [GitLabParam]
params =
[ (ByteString
"group_id", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
groupId)))),
(ByteString
"group_access", ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (Text -> ByteString
T.encodeUtf8 ([Char] -> Text
T.pack (AccessLevel -> [Char]
forall a. Show a => a -> [Char]
show AccessLevel
access))))
]
addr :: Text
addr =
Text
"/projects/"
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> [Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
projectId)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"/share"
defaultProjectAttrs ::
Int ->
ProjectAttrs
defaultProjectAttrs :: Int -> ProjectAttrs
defaultProjectAttrs Int
projId =
Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe EnabledDisabled
-> Maybe AutoDeployStrategy
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe GitStrategy
-> Maybe Int
-> Maybe ProjectSettingAccessLevel
-> Maybe Text
-> Maybe Int
-> Maybe Bool
-> Maybe ProjectSettingAccessLevel
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe ProjectSettingAccessLevel
-> Int
-> Maybe Text
-> Maybe ProjectSettingAccessLevel
-> Maybe Bool
-> Maybe MergeMethod
-> Maybe ProjectSettingAccessLevel
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe Bool
-> Maybe Text
-> Maybe ProjectSettingAccessLevel
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe ProjectSettingAccessLevel
-> Maybe ProjectSettingAccessLevel
-> Maybe Bool
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe ProjectSettingAccessLevel
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe ProjectSettingAccessLevel
-> Maybe SquashOption
-> Maybe Text
-> Maybe Visibility
-> Maybe ProjectSettingAccessLevel
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> ProjectAttrs
ProjectAttrs Maybe Bool
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Int
forall a. Maybe a
Nothing Maybe EnabledDisabled
forall a. Maybe a
Nothing Maybe AutoDeployStrategy
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe GitStrategy
forall a. Maybe a
Nothing Maybe Int
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Int
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Int
projId Maybe Text
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe MergeMethod
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Int
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Maybe SquashOption
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Visibility
forall a. Maybe a
Nothing Maybe ProjectSettingAccessLevel
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing
projectAttrsParams :: ProjectAttrs -> [GitLabParam]
projectAttrsParams :: ProjectAttrs -> [GitLabParam]
projectAttrsParams ProjectAttrs
filters =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ (\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"allow_merge_on_skipped_pipeline", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_allow_merge_on_skipped_pipeline ProjectAttrs
filters,
(\Text
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"analytics_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Text -> [Char]
forall a. Show a => a -> [Char]
show Text
x)))) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_analytics_access_level ProjectAttrs
filters,
(\Int
i -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"approvals_before_merge", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
i)))) (Int -> Maybe GitLabParam) -> Maybe Int -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Int
project_edit_approvals_before_merge ProjectAttrs
filters,
(\EnabledDisabled
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"auto_cancel_pending_pipelines", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (EnabledDisabled -> [Char]
forall a. Show a => a -> [Char]
show EnabledDisabled
x))))
(EnabledDisabled -> Maybe GitLabParam)
-> Maybe EnabledDisabled -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe EnabledDisabled
project_edit_auto_cancel_pending_pipelines
ProjectAttrs
filters,
(\AutoDeployStrategy
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"auto_devops_deploy_strategy", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (AutoDeployStrategy -> [Char]
forall a. Show a => a -> [Char]
show AutoDeployStrategy
x))))
(AutoDeployStrategy -> Maybe GitLabParam)
-> Maybe AutoDeployStrategy -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe AutoDeployStrategy
project_edit_auto_devops_deploy_strategy ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"auto_devops_enabled", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_auto_devops_enabled ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"autoclose_referenced_issues", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_autoclose_referenced_issues ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"build_coverage_regex", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_build_coverage_regex ProjectAttrs
filters,
(\GitStrategy
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"build_git_strategy", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (GitStrategy -> [Char]
forall a. Show a => a -> [Char]
show GitStrategy
x)))) (GitStrategy -> Maybe GitLabParam)
-> Maybe GitStrategy -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe GitStrategy
project_edit_build_git_strategy ProjectAttrs
filters,
(\Int
i -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"build_timeout", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
i)))) (Int -> Maybe GitLabParam) -> Maybe Int -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Int
project_edit_build_timeout ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"builds_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_builds_access_level ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"ci_config_path", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_ci_config_path ProjectAttrs
filters,
(\Int
i -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"ci_default_git_depth", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
i)))) (Int -> Maybe GitLabParam) -> Maybe Int -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Int
project_edit_ci_default_git_depth ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"ci_forward_deployment_enabled", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_ci_forward_deployment_enabled ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"container_registry_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_container_registry_access_level ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"default_branch", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_default_branch ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"description", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_description ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"emails_disabled", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_emails_disabled ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"external_authorization_classification_label", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_external_authorization_classification_label ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"forking_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_forking_access_level ProjectAttrs
filters,
GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"id", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show (ProjectAttrs -> Int
project_edit_id ProjectAttrs
filters)))),
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"import_url", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_import_url ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"issues_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_issues_access_level ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"lfs_enabled", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_lfs_enabled ProjectAttrs
filters,
(\MergeMethod
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"merge_method", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (MergeMethod -> [Char]
forall a. Show a => a -> [Char]
show MergeMethod
x)))) (MergeMethod -> Maybe GitLabParam)
-> Maybe MergeMethod -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe MergeMethod
project_edit_merge_method ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"merge_requests_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_merge_requests_access_level ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"mirror_overwrites_diverged_branches", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_mirror_overwrites_diverged_branches ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"mirror_trigger_builds", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_mirror_trigger_builds ProjectAttrs
filters,
(\Int
i -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"mirror_user_id", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
i)))) (Int -> Maybe GitLabParam) -> Maybe Int -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Int
project_edit_mirror_user_id ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"mirror", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_mirror ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"name", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_name ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"operations_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_operations_access_level ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"only_allow_merge_if_all_discussions_are_resolved", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_only_allow_merge_if_all_discussions_are_resolved ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"only_allow_merge_if_pipeline_succeeds", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_only_allow_merge_if_pipeline_succeeds ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"only_mirror_protected_branches", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_only_mirror_protected_branches ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"packages_enabled", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_packages_enabled ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"pages_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_pages_access_level ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"requirements_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_requirements_access_level ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"restrict_user_defined_variables", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_restrict_user_defined_variables ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"path", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_path ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"public_builds", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_public_builds ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"remove_source_branch_after_merge", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_remove_source_branch_after_merge ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"repository_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_repository_access_level ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"repository_storage", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_repository_storage ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"request_access_enabled", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_request_access_enabled ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"resolve_outdated_diff_discussions", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_resolve_outdated_diff_discussions ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"service_desk_enabled", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_service_desk_enabled ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"shared_runners_enabled", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_shared_runners_enabled ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"show_default_award_emojis", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_show_default_award_emojis ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"snippets_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_snippets_access_level ProjectAttrs
filters,
(\SquashOption
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"squash_option", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (SquashOption -> [Char]
forall a. Show a => a -> [Char]
show SquashOption
x)))) (SquashOption -> Maybe GitLabParam)
-> Maybe SquashOption -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe SquashOption
project_edit_squash_option ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"suggestion_commit_message", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_suggestion_commit_message ProjectAttrs
filters,
(\Visibility
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"visibility", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Visibility -> [Char]
forall a. Show a => a -> [Char]
show Visibility
x)))) (Visibility -> Maybe GitLabParam)
-> Maybe Visibility -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Visibility
project_edit_visibility ProjectAttrs
filters,
(\ProjectSettingAccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"wiki_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (ProjectSettingAccessLevel -> [Char]
forall a. Show a => a -> [Char]
show ProjectSettingAccessLevel
x)))) (ProjectSettingAccessLevel -> Maybe GitLabParam)
-> Maybe ProjectSettingAccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_wiki_access_level ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"issues_template", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_issues_template ProjectAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"merge_requests_template", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Text
project_edit_merge_requests_template ProjectAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"keep_latest_artifact", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectAttrs -> Maybe Bool
project_edit_keep_latest_artifact ProjectAttrs
filters
]
where
textToBS :: Text -> Maybe ByteString
textToBS = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString)
-> (Text -> ByteString) -> Text -> Maybe ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
T.encodeUtf8
showBool :: Bool -> Text
showBool :: Bool -> Text
showBool Bool
True = Text
"true"
showBool Bool
False = Text
"false"
data ProjectAttrs = ProjectAttrs
{
ProjectAttrs -> Maybe Bool
project_edit_allow_merge_on_skipped_pipeline :: Maybe Bool,
ProjectAttrs -> Maybe Text
project_edit_analytics_access_level :: Maybe Text,
ProjectAttrs -> Maybe Int
project_edit_approvals_before_merge :: Maybe Int,
ProjectAttrs -> Maybe EnabledDisabled
project_edit_auto_cancel_pending_pipelines :: Maybe EnabledDisabled,
ProjectAttrs -> Maybe AutoDeployStrategy
project_edit_auto_devops_deploy_strategy :: Maybe AutoDeployStrategy,
ProjectAttrs -> Maybe Bool
project_edit_auto_devops_enabled :: Maybe Bool,
ProjectAttrs -> Maybe Bool
project_edit_autoclose_referenced_issues :: Maybe Bool,
ProjectAttrs -> Maybe Text
project_edit_build_coverage_regex :: Maybe Text,
ProjectAttrs -> Maybe GitStrategy
project_edit_build_git_strategy :: Maybe GitStrategy,
ProjectAttrs -> Maybe Int
project_edit_build_timeout :: Maybe Int,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_builds_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Maybe Text
project_edit_ci_config_path :: Maybe Text,
ProjectAttrs -> Maybe Int
project_edit_ci_default_git_depth :: Maybe Int,
ProjectAttrs -> Maybe Bool
project_edit_ci_forward_deployment_enabled :: Maybe Bool,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_container_registry_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Maybe Text
project_edit_default_branch :: Maybe Text,
ProjectAttrs -> Maybe Text
project_edit_description :: Maybe Text,
ProjectAttrs -> Maybe Bool
project_edit_emails_disabled :: Maybe Bool,
ProjectAttrs -> Maybe Text
project_edit_external_authorization_classification_label :: Maybe Text,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_forking_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Int
project_edit_id :: Int,
ProjectAttrs -> Maybe Text
project_edit_import_url :: Maybe Text,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_issues_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Maybe Bool
project_edit_lfs_enabled :: Maybe Bool,
ProjectAttrs -> Maybe MergeMethod
project_edit_merge_method :: Maybe MergeMethod,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_merge_requests_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Maybe Bool
project_edit_mirror_overwrites_diverged_branches :: Maybe Bool,
ProjectAttrs -> Maybe Bool
project_edit_mirror_trigger_builds :: Maybe Bool,
ProjectAttrs -> Maybe Int
project_edit_mirror_user_id :: Maybe Int,
ProjectAttrs -> Maybe Bool
project_edit_mirror :: Maybe Bool,
ProjectAttrs -> Maybe Text
project_edit_name :: Maybe Text,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_operations_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Maybe Bool
project_edit_only_allow_merge_if_all_discussions_are_resolved :: Maybe Bool,
ProjectAttrs -> Maybe Bool
project_edit_only_allow_merge_if_pipeline_succeeds :: Maybe Bool,
ProjectAttrs -> Maybe Bool
project_edit_only_mirror_protected_branches :: Maybe Bool,
ProjectAttrs -> Maybe Bool
project_edit_packages_enabled :: Maybe Bool,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_pages_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_requirements_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Maybe Bool
project_edit_restrict_user_defined_variables :: Maybe Bool,
ProjectAttrs -> Maybe Text
project_edit_path :: Maybe Text,
ProjectAttrs -> Maybe Bool
project_edit_public_builds :: Maybe Bool,
ProjectAttrs -> Maybe Bool
project_edit_remove_source_branch_after_merge :: Maybe Bool,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_repository_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Maybe Text
project_edit_repository_storage :: Maybe Text,
ProjectAttrs -> Maybe Bool
project_edit_request_access_enabled :: Maybe Bool,
ProjectAttrs -> Maybe Bool
project_edit_resolve_outdated_diff_discussions :: Maybe Bool,
ProjectAttrs -> Maybe Bool
project_edit_service_desk_enabled :: Maybe Bool,
ProjectAttrs -> Maybe Bool
project_edit_shared_runners_enabled :: Maybe Bool,
ProjectAttrs -> Maybe Bool
project_edit_show_default_award_emojis :: Maybe Bool,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_snippets_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Maybe SquashOption
project_edit_squash_option :: Maybe SquashOption,
ProjectAttrs -> Maybe Text
project_edit_suggestion_commit_message :: Maybe Text,
ProjectAttrs -> Maybe Visibility
project_edit_visibility :: Maybe Visibility,
ProjectAttrs -> Maybe ProjectSettingAccessLevel
project_edit_wiki_access_level :: Maybe ProjectSettingAccessLevel,
ProjectAttrs -> Maybe Text
project_edit_issues_template :: Maybe Text,
ProjectAttrs -> Maybe Text
project_edit_merge_requests_template :: Maybe Text,
ProjectAttrs -> Maybe Bool
project_edit_keep_latest_artifact :: Maybe Bool
}
deriving ((forall x. ProjectAttrs -> Rep ProjectAttrs x)
-> (forall x. Rep ProjectAttrs x -> ProjectAttrs)
-> Generic ProjectAttrs
forall x. Rep ProjectAttrs x -> ProjectAttrs
forall x. ProjectAttrs -> Rep ProjectAttrs x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ProjectAttrs -> Rep ProjectAttrs x
from :: forall x. ProjectAttrs -> Rep ProjectAttrs x
$cto :: forall x. Rep ProjectAttrs x -> ProjectAttrs
to :: forall x. Rep ProjectAttrs x -> ProjectAttrs
Generic, Int -> ProjectAttrs -> ShowS
[ProjectAttrs] -> ShowS
ProjectAttrs -> [Char]
(Int -> ProjectAttrs -> ShowS)
-> (ProjectAttrs -> [Char])
-> ([ProjectAttrs] -> ShowS)
-> Show ProjectAttrs
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProjectAttrs -> ShowS
showsPrec :: Int -> ProjectAttrs -> ShowS
$cshow :: ProjectAttrs -> [Char]
show :: ProjectAttrs -> [Char]
$cshowList :: [ProjectAttrs] -> ShowS
showList :: [ProjectAttrs] -> ShowS
Show, ProjectAttrs -> ProjectAttrs -> Bool
(ProjectAttrs -> ProjectAttrs -> Bool)
-> (ProjectAttrs -> ProjectAttrs -> Bool) -> Eq ProjectAttrs
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProjectAttrs -> ProjectAttrs -> Bool
== :: ProjectAttrs -> ProjectAttrs -> Bool
$c/= :: ProjectAttrs -> ProjectAttrs -> Bool
/= :: ProjectAttrs -> ProjectAttrs -> Bool
Eq)
data EnabledDisabled
= Enabled
| Disabled
deriving (EnabledDisabled -> EnabledDisabled -> Bool
(EnabledDisabled -> EnabledDisabled -> Bool)
-> (EnabledDisabled -> EnabledDisabled -> Bool)
-> Eq EnabledDisabled
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EnabledDisabled -> EnabledDisabled -> Bool
== :: EnabledDisabled -> EnabledDisabled -> Bool
$c/= :: EnabledDisabled -> EnabledDisabled -> Bool
/= :: EnabledDisabled -> EnabledDisabled -> Bool
Eq)
instance Show EnabledDisabled where
show :: EnabledDisabled -> [Char]
show EnabledDisabled
Enabled = [Char]
"enabled"
show EnabledDisabled
Disabled = [Char]
"disabled"
data AutoDeployStrategy
= Continuous
| Manual
| TimedIncremental
deriving (AutoDeployStrategy -> AutoDeployStrategy -> Bool
(AutoDeployStrategy -> AutoDeployStrategy -> Bool)
-> (AutoDeployStrategy -> AutoDeployStrategy -> Bool)
-> Eq AutoDeployStrategy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AutoDeployStrategy -> AutoDeployStrategy -> Bool
== :: AutoDeployStrategy -> AutoDeployStrategy -> Bool
$c/= :: AutoDeployStrategy -> AutoDeployStrategy -> Bool
/= :: AutoDeployStrategy -> AutoDeployStrategy -> Bool
Eq)
instance Show AutoDeployStrategy where
show :: AutoDeployStrategy -> [Char]
show AutoDeployStrategy
Continuous = [Char]
"continuous"
show AutoDeployStrategy
Manual = [Char]
"manual"
show AutoDeployStrategy
TimedIncremental = [Char]
"timed_incremental"
data GitStrategy
= Clone
| Fetch
| None
deriving (GitStrategy -> GitStrategy -> Bool
(GitStrategy -> GitStrategy -> Bool)
-> (GitStrategy -> GitStrategy -> Bool) -> Eq GitStrategy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: GitStrategy -> GitStrategy -> Bool
== :: GitStrategy -> GitStrategy -> Bool
$c/= :: GitStrategy -> GitStrategy -> Bool
/= :: GitStrategy -> GitStrategy -> Bool
Eq)
instance Show GitStrategy where
show :: GitStrategy -> [Char]
show GitStrategy
Clone = [Char]
"clone"
show GitStrategy
Fetch = [Char]
"fetch"
show GitStrategy
None = [Char]
"none"
data ProjectSettingAccessLevel
= DisabledAccess
| PrivateAccess
| EnabledAccess
| PublicAccess
deriving (ProjectSettingAccessLevel -> ProjectSettingAccessLevel -> Bool
(ProjectSettingAccessLevel -> ProjectSettingAccessLevel -> Bool)
-> (ProjectSettingAccessLevel -> ProjectSettingAccessLevel -> Bool)
-> Eq ProjectSettingAccessLevel
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProjectSettingAccessLevel -> ProjectSettingAccessLevel -> Bool
== :: ProjectSettingAccessLevel -> ProjectSettingAccessLevel -> Bool
$c/= :: ProjectSettingAccessLevel -> ProjectSettingAccessLevel -> Bool
/= :: ProjectSettingAccessLevel -> ProjectSettingAccessLevel -> Bool
Eq)
instance Show ProjectSettingAccessLevel where
show :: ProjectSettingAccessLevel -> [Char]
show ProjectSettingAccessLevel
DisabledAccess = [Char]
"disabled"
show ProjectSettingAccessLevel
PrivateAccess = [Char]
"private"
show ProjectSettingAccessLevel
EnabledAccess = [Char]
"enabled"
show ProjectSettingAccessLevel
PublicAccess = [Char]
"public"
data MergeMethod
= Merge
| RebaseMerge
| FF
deriving (MergeMethod -> MergeMethod -> Bool
(MergeMethod -> MergeMethod -> Bool)
-> (MergeMethod -> MergeMethod -> Bool) -> Eq MergeMethod
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MergeMethod -> MergeMethod -> Bool
== :: MergeMethod -> MergeMethod -> Bool
$c/= :: MergeMethod -> MergeMethod -> Bool
/= :: MergeMethod -> MergeMethod -> Bool
Eq)
instance Show MergeMethod where
show :: MergeMethod -> [Char]
show MergeMethod
Merge = [Char]
"merge"
show MergeMethod
RebaseMerge = [Char]
"rebase_merge"
show MergeMethod
FF = [Char]
"ff"
data SquashOption
= NeverSquash
| AlwaysSquash
| DefaultOnSquash
| DefaultOffSquash
deriving (SquashOption -> SquashOption -> Bool
(SquashOption -> SquashOption -> Bool)
-> (SquashOption -> SquashOption -> Bool) -> Eq SquashOption
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SquashOption -> SquashOption -> Bool
== :: SquashOption -> SquashOption -> Bool
$c/= :: SquashOption -> SquashOption -> Bool
/= :: SquashOption -> SquashOption -> Bool
Eq)
instance Show SquashOption where
show :: SquashOption -> [Char]
show SquashOption
NeverSquash = [Char]
"never"
show SquashOption
AlwaysSquash = [Char]
"always"
show SquashOption
DefaultOnSquash = [Char]
"default_on"
show SquashOption
DefaultOffSquash = [Char]
"default_off"
defaultProjectSearchAttrs :: ProjectSearchAttrs
defaultProjectSearchAttrs :: ProjectSearchAttrs
defaultProjectSearchAttrs =
Maybe Bool
-> Maybe Int
-> Maybe Bool
-> Maybe Bool
-> Maybe UTCTime
-> Maybe UTCTime
-> Maybe Bool
-> Maybe AccessLevel
-> Maybe OrderBy
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Bool
-> Maybe SortBy
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Visibility
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> ProjectSearchAttrs
ProjectSearchAttrs Maybe Bool
forall a. Maybe a
Nothing Maybe Int
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe UTCTime
forall a. Maybe a
Nothing Maybe UTCTime
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe AccessLevel
forall a. Maybe a
Nothing Maybe OrderBy
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe SortBy
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing Maybe Int
forall a. Maybe a
Nothing Maybe Visibility
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Bool
forall a. Maybe a
Nothing Maybe Text
forall a. Maybe a
Nothing
data ProjectSearchAttrs = ProjectSearchAttrs
{
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_archived :: Maybe Bool,
ProjectSearchAttrs -> Maybe Int
projectSearchFilter_id_after :: Maybe Int,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_id_before :: Maybe Bool,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_imported :: Maybe Bool,
ProjectSearchAttrs -> Maybe UTCTime
projectSearchFilter_last_activity_after :: Maybe UTCTime,
ProjectSearchAttrs -> Maybe UTCTime
projectSearchFilter_last_activity_before :: Maybe UTCTime,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_membership :: Maybe Bool,
ProjectSearchAttrs -> Maybe AccessLevel
projectSearchFilter_min_access_level :: Maybe AccessLevel,
ProjectSearchAttrs -> Maybe OrderBy
projectSearchFilter_order_by :: Maybe OrderBy,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_owned :: Maybe Bool,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_repository_checksum_failed :: Maybe Bool,
ProjectSearchAttrs -> Maybe Text
projectSearchFilter_repository_storage :: Maybe Text,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_search_namespaces :: Maybe Bool,
ProjectSearchAttrs -> Maybe Text
projectSearchFilter_search :: Maybe Text,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_simple :: Maybe Bool,
ProjectSearchAttrs -> Maybe SortBy
projectSearchFilter_sort :: Maybe SortBy,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_starred :: Maybe Bool,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_statistics :: Maybe Bool,
ProjectSearchAttrs -> Maybe Text
projectSearchFilter_topic :: Maybe Text,
ProjectSearchAttrs -> Maybe Int
projectSearchFilter_topic_id :: Maybe Int,
ProjectSearchAttrs -> Maybe Visibility
projectSearchFilter_visibility :: Maybe Visibility,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_with_custom_attributes :: Maybe Bool,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_with_issues_enabled :: Maybe Bool,
ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_with_merge_requests_enabled :: Maybe Bool,
ProjectSearchAttrs -> Maybe Text
projectSearchFilter_with_programming_language :: Maybe Text
}
projectSearchAttrsParams :: ProjectSearchAttrs -> [GitLabParam]
projectSearchAttrsParams :: ProjectSearchAttrs -> [GitLabParam]
projectSearchAttrsParams ProjectSearchAttrs
filters =
[Maybe GitLabParam] -> [GitLabParam]
forall a. [Maybe a] -> [a]
catMaybes
[ (\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"archived", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_archived ProjectSearchAttrs
filters,
(\Int
i -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"id_after", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
i)))) (Int -> Maybe GitLabParam) -> Maybe Int -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Int
projectSearchFilter_id_after ProjectSearchAttrs
filters,
(\Bool
i -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"id_before", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Bool -> [Char]
forall a. Show a => a -> [Char]
show Bool
i)))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_id_before ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"imported", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_imported ProjectSearchAttrs
filters,
(\UTCTime
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"last_activity_after", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (UTCTime -> [Char]
forall a. Show a => a -> [Char]
show UTCTime
x)))) (UTCTime -> Maybe GitLabParam)
-> Maybe UTCTime -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe UTCTime
projectSearchFilter_last_activity_after ProjectSearchAttrs
filters,
(\UTCTime
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"last_activity_before", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (UTCTime -> [Char]
forall a. Show a => a -> [Char]
show UTCTime
x)))) (UTCTime -> Maybe GitLabParam)
-> Maybe UTCTime -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe UTCTime
projectSearchFilter_last_activity_before ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"membership", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_membership ProjectSearchAttrs
filters,
(\AccessLevel
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"min_access_level", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (AccessLevel -> [Char]
forall a. Show a => a -> [Char]
show AccessLevel
x)))) (AccessLevel -> Maybe GitLabParam)
-> Maybe AccessLevel -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe AccessLevel
projectSearchFilter_min_access_level ProjectSearchAttrs
filters,
(\OrderBy
x -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"order_by", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (OrderBy -> [Char]
forall a. Show a => a -> [Char]
show OrderBy
x)))) (OrderBy -> Maybe GitLabParam)
-> Maybe OrderBy -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe OrderBy
projectSearchFilter_order_by ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"owned", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_owned ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"repository_checksum_failed", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_repository_checksum_failed ProjectSearchAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"repository_storage", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Text
projectSearchFilter_repository_storage ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"search_namespaces", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_search_namespaces ProjectSearchAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"search", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Text
projectSearchFilter_search ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"simple", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_simple ProjectSearchAttrs
filters,
(\SortBy
i -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"sort", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (SortBy -> [Char]
forall a. Show a => a -> [Char]
show SortBy
i)))) (SortBy -> Maybe GitLabParam) -> Maybe SortBy -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe SortBy
projectSearchFilter_sort ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"starred", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_starred ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"statistics", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_statistics ProjectSearchAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"topic", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Text
projectSearchFilter_topic ProjectSearchAttrs
filters,
(\Int
i -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"topic_id", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Int -> [Char]
forall a. Show a => a -> [Char]
show Int
i)))) (Int -> Maybe GitLabParam) -> Maybe Int -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Int
projectSearchFilter_topic_id ProjectSearchAttrs
filters,
(\Visibility
i -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"visibility", Text -> Maybe ByteString
textToBS ([Char] -> Text
T.pack (Visibility -> [Char]
forall a. Show a => a -> [Char]
show Visibility
i)))) (Visibility -> Maybe GitLabParam)
-> Maybe Visibility -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Visibility
projectSearchFilter_visibility ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"with_custom_attributes", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_with_custom_attributes ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"with_issues_enabled", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_with_issues_enabled ProjectSearchAttrs
filters,
(\Bool
b -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"with_merge_requests_enabled", Text -> Maybe ByteString
textToBS (Bool -> Text
showBool Bool
b))) (Bool -> Maybe GitLabParam) -> Maybe Bool -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Bool
projectSearchFilter_with_merge_requests_enabled ProjectSearchAttrs
filters,
(\Text
t -> GitLabParam -> Maybe GitLabParam
forall a. a -> Maybe a
Just (ByteString
"with_programming_language", Text -> Maybe ByteString
textToBS Text
t)) (Text -> Maybe GitLabParam) -> Maybe Text -> Maybe GitLabParam
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< ProjectSearchAttrs -> Maybe Text
projectSearchFilter_with_programming_language ProjectSearchAttrs
filters
]
where
textToBS :: Text -> Maybe ByteString
textToBS = ByteString -> Maybe ByteString
forall a. a -> Maybe a
Just (ByteString -> Maybe ByteString)
-> (Text -> ByteString) -> Text -> Maybe ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
T.encodeUtf8
showBool :: Bool -> Text
showBool :: Bool -> Text
showBool Bool
True = Text
"true"
showBool Bool
False = Text
"false"
projectCISuccess ::
Project ->
GitLab Bool
projectCISuccess :: Project -> GitLab Bool
projectCISuccess Project
prj = do
Maybe [Pipeline]
pipes <- Project -> GitLab (Maybe [Pipeline])
pipelines Project
prj
case Maybe [Pipeline]
pipes of
Maybe [Pipeline]
Nothing -> Bool -> GitLab Bool
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
False
Just [] -> Bool -> GitLab Bool
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
False
Just (Pipeline
x : [Pipeline]
_) -> Bool -> GitLab Bool
forall a. a -> GitLabT IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Pipeline -> Text
pipeline_status Pipeline
x Text -> Text -> Bool
forall a. Eq a => a -> a -> Bool
== Text
"success")