summaryrefslogtreecommitdiff
path: root/lib/gitlab_danger.rb
diff options
context:
space:
mode:
authorAsh McKenzie <amckenzie@gitlab.com>2019-09-06 11:21:53 +0000
committerLin Jen-Shin <godfat@godfat.org>2019-09-06 11:21:53 +0000
commit9fc9ab2ba2b0db05f6365054aa3bddcda3c7333d (patch)
treed59a451e3300c4598f2aa66d4b6e82b0b3fa56ef /lib/gitlab_danger.rb
parent3441092b3840cecb913068542ee9242ea19a2017 (diff)
downloadgitlab-ce-9fc9ab2ba2b0db05f6365054aa3bddcda3c7333d.tar.gz
Add new GitlabDanger class
This class encapsulates our use of the Danger gem.
Diffstat (limited to 'lib/gitlab_danger.rb')
-rw-r--r--lib/gitlab_danger.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/gitlab_danger.rb b/lib/gitlab_danger.rb
new file mode 100644
index 00000000000..b4768a9546d
--- /dev/null
+++ b/lib/gitlab_danger.rb
@@ -0,0 +1,54 @@
+# frozen_string_literal: true
+
+class GitlabDanger
+ LOCAL_RULES ||= %w[
+ changes_size
+ gemfile
+ documentation
+ frozen_string
+ duplicate_yarn_dependencies
+ prettier
+ eslint
+ database
+ ].freeze
+
+ CI_ONLY_RULES ||= %w[
+ metadata
+ changelog
+ specs
+ commit_messages
+ roulette
+ single_codebase
+ gitlab_ui_wg
+ ce_ee_vue_templates
+ only_documentation
+ ].freeze
+
+ MESSAGE_PREFIX = '==>'.freeze
+
+ attr_reader :gitlab_danger_helper
+
+ def initialize(gitlab_danger_helper)
+ @gitlab_danger_helper = gitlab_danger_helper
+ end
+
+ def self.local_warning_message
+ "#{MESSAGE_PREFIX} Only the following Danger rules can be run locally: #{LOCAL_RULES.join(', ')}"
+ end
+
+ def self.success_message
+ "#{MESSAGE_PREFIX} No Danger rule violations!"
+ end
+
+ def rule_names
+ ci? ? LOCAL_RULES | CI_ONLY_RULES : LOCAL_RULES
+ end
+
+ def html_link(str)
+ self.ci? ? gitlab_danger_helper.html_link(str) : str
+ end
+
+ def ci?
+ !gitlab_danger_helper.nil?
+ end
+end