Class: Gitlab::Dangerfiles::Engine

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/dangerfiles.rb

Overview

This class provides utility methods to import plugins and dangerfiles easily.

Instance Method Summary collapse

Constructor Details

#initialize(dangerfile) ⇒ Gitlab::Dangerfiles::Engine

Examples:

# In your main Dangerfile:
dangerfiles = Gitlab::Dangerfiles::Engine.new(self)

Parameters:

  • dangerfile (Danger::Dangerfile)

    A Danger::Dangerfile object.



44
45
46
47
48
49
# File 'lib/gitlab/dangerfiles.rb', line 44

def initialize(dangerfile)
  @dangerfile = dangerfile

  # Import internal plugins eagerly, since other functionality in this class may depend on them.
  danger_plugin.import_plugin(File.expand_path("../danger/plugins/internal/*.rb", __dir__))
end

Instance Method Details

#configObject

Proxy method to helper_plugin.config.



99
100
101
# File 'lib/gitlab/dangerfiles.rb', line 99

def config
  helper_plugin.config
end

#import_dangerfiles(only: nil, except: []) ⇒ Object

Import available Dangerfiles.

Examples:

# In your main Dangerfile:
Gitlab::Dangerfiles.for_project(self) do |dangerfiles|
  # Import all rules
  dangerfiles.import_dangerfiles
  # Or import only a subset of rules
  dangerfiles.import_dangerfiles(only: %w[changes_size])
  # Or import all rules except a subset of rules
  dangerfiles.import_dangerfiles(except: %w[commit_messages])
  # Or import only a subset of rules, except a subset of rules
  dangerfiles.import_dangerfiles(only: %w[changes_size], except: %w[commit_messages])
end

Parameters:

  • only (Symbol, Array<String>) (defaults to: nil)

    An array of rules to import (defaults to all rules). Available rules are: changes_size.

  • except (Symbol, Array<String>) (defaults to: [])

    An array of rules to not import (defaults to []). Available rules are: changes_size.



87
88
89
90
91
92
93
94
95
96
# File 'lib/gitlab/dangerfiles.rb', line 87

def import_dangerfiles(only: nil, except: [])
  return if helper_plugin.release_automation?

  rules = filtered_rules(only, except)

  rules.each do |rule, path|
    puts "Importing rule #{rule} at #{path}" if helper_plugin.ci?
    danger_plugin.import_dangerfile(path: path)
  end
end

#import_defaultsObject

Imports all default plugins and rules.

Examples:

# In your main Dangerfile:
Gitlab::Dangerfiles.for_project(self) do |dangerfiles|
  dangerfiles.import_defaults
end


110
111
112
113
# File 'lib/gitlab/dangerfiles.rb', line 110

def import_defaults
  import_plugins
  import_dangerfiles
end

#import_pluginsObject

Import all available plugins.

Examples:

# In your main Dangerfile:
Gitlab::Dangerfiles.for_project(self) do |dangerfiles|
  dangerfiles.import_plugins
end


58
59
60
61
62
63
64
65
# File 'lib/gitlab/dangerfiles.rb', line 58

def import_plugins
  danger_plugin.import_plugin(File.expand_path("../danger/plugins/*.rb", __dir__))

  Dir.glob(File.expand_path("danger/plugins/*.rb", config.project_root)).sort.each do |path|
    puts "Importing plugin at #{path}" if helper_plugin.ci?
    danger_plugin.import_plugin(path)
  end
end