From 570e75d5548daa971ff570a634dec0767e3ba6c0 Mon Sep 17 00:00:00 2001 From: Gauvain Pocentek Date: Sun, 6 Nov 2016 08:19:41 +0100 Subject: [PATCH] Add support for templates API Add gitlab CI and gitignores APIs Rework the templates/license API docs --- docs/api-objects.rst | 2 +- docs/gl_objects/licenses.py | 8 ---- docs/gl_objects/licenses.rst | 21 ---------- docs/gl_objects/templates.py | 26 +++++++++++++ docs/gl_objects/templates.rst | 72 +++++++++++++++++++++++++++++++++++ gitlab/__init__.py | 2 + gitlab/objects.py | 24 ++++++++++++ 7 files changed, 125 insertions(+), 30 deletions(-) delete mode 100644 docs/gl_objects/licenses.py delete mode 100644 docs/gl_objects/licenses.rst create mode 100644 docs/gl_objects/templates.py create mode 100644 docs/gl_objects/templates.rst diff --git a/docs/api-objects.rst b/docs/api-objects.rst index 5270246bc..129667cf8 100644 --- a/docs/api-objects.rst +++ b/docs/api-objects.rst @@ -16,7 +16,6 @@ API objects manipulation gl_objects/groups gl_objects/issues gl_objects/labels - gl_objects/licenses gl_objects/notifications gl_objects/mrs gl_objects/namespaces @@ -25,6 +24,7 @@ API objects manipulation gl_objects/runners gl_objects/settings gl_objects/system_hooks + gl_objects/templates gl_objects/todos gl_objects/users gl_objects/sidekiq diff --git a/docs/gl_objects/licenses.py b/docs/gl_objects/licenses.py deleted file mode 100644 index 425a9a46d..000000000 --- a/docs/gl_objects/licenses.py +++ /dev/null @@ -1,8 +0,0 @@ -# list -licenses = gl.licenses.list() -# end list - -# get -license = gl.licenses.get('apache-2.0', project='foobar', fullname='John Doe') -print(license.content) -# end get diff --git a/docs/gl_objects/licenses.rst b/docs/gl_objects/licenses.rst deleted file mode 100644 index 2b823799e..000000000 --- a/docs/gl_objects/licenses.rst +++ /dev/null @@ -1,21 +0,0 @@ -######## -Licenses -######## - -Use :class:`~gitlab.objects.License` objects to manipulate licenses. The -:attr:`gitlab.Gitlab.licenses` manager object provides helper functions. - -Examples --------- - -List known licenses: - -.. literalinclude:: licenses.py - :start-after: # list - :end-before: # end list - -Generate a license content for a project: - -.. literalinclude:: licenses.py - :start-after: # get - :end-before: # end get diff --git a/docs/gl_objects/templates.py b/docs/gl_objects/templates.py new file mode 100644 index 000000000..1bc97bb8f --- /dev/null +++ b/docs/gl_objects/templates.py @@ -0,0 +1,26 @@ +# license list +licenses = gl.licenses.list() +# end license list + +# license get +license = gl.licenses.get('apache-2.0', project='foobar', fullname='John Doe') +print(license.content) +# end license get + +# gitignore list +gitignores = gl.gitignores.list() +# end gitignore list + +# gitignore get +gitignore = gl.gitignores.get('Python') +print(gitignore.content) +# end gitignore get + +# gitlabciyml list +gitlabciymls = gl.gitlabciymls.list() +# end gitlabciyml list + +# gitlabciyml get +gitlabciyml = gl.gitlabciymls.get('Pelican') +print(gitlabciyml.content) +# end gitlabciyml get diff --git a/docs/gl_objects/templates.rst b/docs/gl_objects/templates.rst new file mode 100644 index 000000000..1ce429d3c --- /dev/null +++ b/docs/gl_objects/templates.rst @@ -0,0 +1,72 @@ +######### +Templates +######### + +You can request templates for different type of files: + +* License files +* .gitignore files +* GitLab CI configuration files + +License templates +================= + +* Object class: :class:`~gitlab.objects.License` +* Manager object: :attr:`gitlab.Gitlab.licenses` + +Examples +-------- + +List known license templates: + +.. literalinclude:: templates.py + :start-after: # license list + :end-before: # end license list + +Generate a license content for a project: + +.. literalinclude:: templates.py + :start-after: # license get + :end-before: # end license get + +.gitignore templates +==================== + +* Object class: :class:`~gitlab.objects.Gitignore` +* Manager object: :attr:`gitlab.Gitlab.gitognores` + +Examples +-------- + +List known gitignore templates: + +.. literalinclude:: templates.py + :start-after: # gitignore list + :end-before: # end gitignore list + +Get a gitignore template: + +.. literalinclude:: templates.py + :start-after: # gitignore get + :end-before: # end gitignore get + +GitLab CI templates +=================== + +* Object class: :class:`~gitlab.objects.Gitlabciyml` +* Manager object: :attr:`gitlab.Gitlab.gitlabciymls` + +Examples +-------- + +List known GitLab CI templates: + +.. literalinclude:: templates.py + :start-after: # gitlabciyml list + :end-before: # end gitlabciyml list + +Get a GitLab CI template: + +.. literalinclude:: templates.py + :start-after: # gitlabciyml get + :end-before: # end gitlabciyml get diff --git a/gitlab/__init__.py b/gitlab/__init__.py index f91fdf218..3a1262968 100644 --- a/gitlab/__init__.py +++ b/gitlab/__init__.py @@ -91,6 +91,8 @@ def __init__(self, url, private_token=None, email=None, password=None, self.broadcastmessages = BroadcastMessageManager(self) self.keys = KeyManager(self) + self.gitlabciymls = GitlabciymlManager(self) + self.gitignores = GitignoreManager(self) self.groups = GroupManager(self) self.hooks = HookManager(self) self.issues = IssueManager(self) diff --git a/gitlab/objects.py b/gitlab/objects.py index c47ed472a..5166b0808 100644 --- a/gitlab/objects.py +++ b/gitlab/objects.py @@ -811,6 +811,30 @@ class NotificationSettingsManager(BaseManager): obj_cls = NotificationSettings +class Gitignore(GitlabObject): + _url = '/templates/gitignores' + canDelete = False + canUpdate = False + canCreate = False + idAttr = 'name' + + +class GitignoreManager(BaseManager): + obj_cls = Gitignore + + +class Gitlabciyml(GitlabObject): + _url = '/templates/gitlab_ci_ymls' + canDelete = False + canUpdate = False + canCreate = False + idAttr = 'name' + + +class GitlabciymlManager(BaseManager): + obj_cls = Gitlabciyml + + class GroupIssue(GitlabObject): _url = '/groups/%(group_id)s/issues' canGet = 'from_list'