summaryrefslogtreecommitdiff
path: root/lib/api
diff options
context:
space:
mode:
authorJacob Schatz <jschatz@gitlab.com>2016-06-21 10:56:41 +0000
committerJacob Schatz <jschatz@gitlab.com>2016-06-21 10:56:41 +0000
commit0d287b06a6fa7a373df03378f9f1a048e5890a4f (patch)
tree271a95f91752727a3ee350e4f47f82e9f6355357 /lib/api
parentf90c8c624d2bf0391a25ae07b1516d11948e1a81 (diff)
parent35383f33acaae6b286c203005b0410388a3bcca0 (diff)
downloadgitlab-ce-0d287b06a6fa7a373df03378f9f1a048e5890a4f.tar.gz
Merge branch '17521-gitlab-ci-yml-templates' into 'master'
GitLab CI Yaml template dropdown ## What does this MR do? Make it possible to select a dropdown for an easy start with GitLab CI. ## What are the relevant issue numbers? Closes #17521 ## TODO - [ ] Backend - [x] CHANGELOG item - [x] Fix rubocop failure - [x] API Support - [x] New tests - [x] Add disclaimer to the top of the gitlab-ci.yml - [ ] Frontend - [x] New tests See merge request !4411
Diffstat (limited to 'lib/api')
-rw-r--r--lib/api/api.rb2
-rw-r--r--lib/api/entities.rb4
-rw-r--r--lib/api/gitignores.rb29
-rw-r--r--lib/api/templates.rb36
4 files changed, 39 insertions, 32 deletions
diff --git a/lib/api/api.rb b/lib/api/api.rb
index 0e7a1cc2623..f8f680a6311 100644
--- a/lib/api/api.rb
+++ b/lib/api/api.rb
@@ -33,7 +33,6 @@ module API
mount ::API::Commits
mount ::API::DeployKeys
mount ::API::Files
- mount ::API::Gitignores
mount ::API::GroupMembers
mount ::API::Groups
mount ::API::Internal
@@ -58,6 +57,7 @@ module API
mount ::API::Subscriptions
mount ::API::SystemHooks
mount ::API::Tags
+ mount ::API::Templates
mount ::API::Triggers
mount ::API::Users
mount ::API::Variables
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 3fde7aa989f..0ee96d4c67b 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -473,11 +473,11 @@ module API
expose :content
end
- class GitignoresList < Grape::Entity
+ class TemplatesList < Grape::Entity
expose :name
end
- class Gitignore < Grape::Entity
+ class Template < Grape::Entity
expose :name, :content
end
end
diff --git a/lib/api/gitignores.rb b/lib/api/gitignores.rb
deleted file mode 100644
index 270c9501dd2..00000000000
--- a/lib/api/gitignores.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-module API
- class Gitignores < Grape::API
-
- # Get the list of the available gitignore templates
- #
- # Example Request:
- # GET /gitignores
- get 'gitignores' do
- present Gitlab::Gitignore.all, with: Entities::GitignoresList
- end
-
- # Get the text for a specific gitignore
- #
- # Parameters:
- # name (required) - The name of a license
- #
- # Example Request:
- # GET /gitignores/Elixir
- #
- get 'gitignores/:name' do
- required_attributes! [:name]
-
- gitignore = Gitlab::Gitignore.find(params[:name])
- not_found!('.gitignore') unless gitignore
-
- present gitignore, with: Entities::Gitignore
- end
- end
-end
diff --git a/lib/api/templates.rb b/lib/api/templates.rb
new file mode 100644
index 00000000000..18408797756
--- /dev/null
+++ b/lib/api/templates.rb
@@ -0,0 +1,36 @@
+module API
+ class Templates < Grape::API
+ TEMPLATE_TYPES = {
+ gitignores: Gitlab::Template::Gitignore,
+ gitlab_ci_ymls: Gitlab::Template::GitlabCiYml
+ }.freeze
+
+ TEMPLATE_TYPES.each do |template, klass|
+ # Get the list of the available template
+ #
+ # Example Request:
+ # GET /gitignores
+ # GET /gitlab_ci_ymls
+ get template.to_s do
+ present klass.all, with: Entities::TemplatesList
+ end
+
+ # Get the text for a specific template
+ #
+ # Parameters:
+ # name (required) - The name of a template
+ #
+ # Example Request:
+ # GET /gitignores/Elixir
+ # GET /gitlab_ci_ymls/Ruby
+ get "#{template}/:name" do
+ required_attributes! [:name]
+
+ new_template = klass.find(params[:name])
+ not_found!(template.to_s.singularize) unless new_template
+
+ present new_template, with: Entities::Template
+ end
+ end
+ end
+end