# frozen_string_literal: true

# rubocop:todo Gitlab/NamespacedClass
class GitlabDanger
  LOCAL_RULES ||= %w[
    changes_size
    commit_messages
    database
    documentation
    duplicate_yarn_dependencies
    eslint
    karma
    pajamas
    pipeline
    prettier
    product_intelligence
    utility_css
  ].freeze

  CI_ONLY_RULES ||= %w[
    ce_ee_vue_templates
    changelog
    ci_templates
    metadata
    feature_flag
    roulette
    sidekiq_queues
    specialization_labels
    specs
  ].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