Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tasks/gitlab/update_templates.rake')
-rw-r--r--lib/tasks/gitlab/update_templates.rake61
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/tasks/gitlab/update_templates.rake b/lib/tasks/gitlab/update_templates.rake
new file mode 100644
index 00000000000..36ffad8aae9
--- /dev/null
+++ b/lib/tasks/gitlab/update_templates.rake
@@ -0,0 +1,61 @@
+namespace :gitlab do
+ desc "GitLab | Update templates"
+ task :update_templates do
+ update("gitignore")
+ update("gitlab-ci-yml")
+ end
+
+ def update(directory)
+ unless clone_repository(directory)
+ puts "Cloning the #{directory} templates failed".red
+ return
+ end
+
+ remove_unneeded_files(directory)
+ puts "Done".green
+ end
+
+ def clone_repository(directory)
+ dir = File.join(vendor_directory, directory)
+ FileUtils.rm_rf(dir) if Dir.exist?(dir)
+ FileUtils.cd vendor_directory
+
+ system("git clone --depth=1 --branch=master #{TEMPLATE_DATA[directory]}")
+ end
+
+ # Retain only certain files:
+ # - The LICENSE, because we have to
+ # - The sub dir global
+ # - The gitignores themself
+ # - Dir.entires returns also the entries '.' and '..'
+ def remove_unneeded_files(directory)
+ regex = CLEANUP_REGEX[directory]
+ Dir.foreach(directory) do |file|
+ FileUtils.rm_rf(File.join(directory, file)) unless file =~ regex
+ end
+ end
+
+ private
+
+ TEMPLATE_DATA = {
+ "gitignore" => "https://github.com/github/gitignore.git",
+ "gitlab-ci-yml" => "https://gitlab.com/gitlab-org/gitlab-ci-yml.git"
+ }.freeze
+
+ CLEANUP_REGEX = {
+ "gitignore" => /(\.{1,2}|LICENSE|Global|\.gitignore)\z/,
+ "gitlab-ci-yml" => /(\.{1,2}|LICENSE|Pages|\.gitignore)\z/
+ }.freeze
+
+ def vendor_directory
+ Rails.root.join('vendor')
+ end
+
+ def gitignore_directory
+ File.join(vendor_directory, 'gitignore')
+ end
+
+ def gitlab_ci_directory
+ File.join(vendor_directory, 'gitlab-ci')
+ end
+end