danger 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 331ec016762064e8a92668e5b9b56521e5873f50
4
- data.tar.gz: 69fb9998dbe05c5465301a4a0396a28ce4ebf1ca
3
+ metadata.gz: af48c7716089bda158a7d4fb5422684cda1cf882
4
+ data.tar.gz: 31bcd2dba47171bf5898a2d0954c385b7aa1e60b
5
5
  SHA512:
6
- metadata.gz: 0abf5fed8d027d3368573054d82b87c4010bf806ef83d0d41f8b964d438e44fd35dd99f822de9ebc581c3d3d59ea6810145235a08b7ed7a20682f4ae35e80019
7
- data.tar.gz: 2189b8616f4a18ee79d12863c5ce0db5dc803996635c5e14b6f56f66050b97207cb76198fc36cadad80399e4b3ed6c0901814f653972236d57ab4a5f37015583
6
+ metadata.gz: 18da3b3a61540d5b8725e5d154c5f38e346af10429ef61fbbc280fe9f8bab6206b8442f0c868ca4559bbfe28a011607f1caac4aaccc234f86679c33435fa32c3
7
+ data.tar.gz: de5ffb844e8cd08df544bdde71411d3a2e1a2520fd626f018f3c51ffe44bde1f207a2608713c1cbb7ab134682aea672a2de83e454285b29ca9abd5e033f7e6c8
@@ -19,7 +19,7 @@ module Danger
19
19
  end
20
20
 
21
21
  def supports?(request_source)
22
- supported_request_sources.include? request_source
22
+ supported_request_sources.include?(request_source)
23
23
  end
24
24
 
25
25
  def self.validates_as_ci?(_env)
@@ -53,7 +53,7 @@ module Danger
53
53
  end
54
54
 
55
55
  def initialize(env)
56
- self.repo_url = env["GIT_URL"]
56
+ self.repo_url = env.fetch("GIT_URL_1") { env["GIT_URL"] }
57
57
  self.pull_request_id = self.class.pull_request_id(env)
58
58
 
59
59
  repo_matches = self.repo_url.match(%r{([\/:])([^\/]+\/[^\/.]+)(?:.git)?$})
@@ -0,0 +1,43 @@
1
+ require "claide_plugin"
2
+ require "danger/commands/dangerfile/init"
3
+
4
+ module Danger
5
+ class DangerfileGem < DangerfileCommand
6
+ self.summary = "Create a gem-based Dangerfile quickly."
7
+ def self.description
8
+ <<-DESC
9
+ Creates a scaffold for the development of a new gem based Dangerfile
10
+ named `NAME` according to the best practices.
11
+ DESC
12
+ end
13
+ self.command = "gem"
14
+ self.arguments = [
15
+ CLAide::Argument.new("NAME", true)
16
+ ]
17
+
18
+ def initialize(argv)
19
+ @name = argv.shift_argument
20
+ prefix = "dangerfile" + "-"
21
+ unless @name.nil? || @name.empty? || @name.start_with?(prefix)
22
+ @name = prefix + @name.dup
23
+ end
24
+ @template_url = argv.shift_argument
25
+ super
26
+ end
27
+
28
+ def validate!
29
+ super
30
+ if @name.nil? || @name.empty?
31
+ help! "A name for the plugin is required."
32
+ end
33
+
34
+ help! "The plugin name cannot contain spaces." if @name =~ /\s/
35
+ end
36
+
37
+ def run
38
+ runner = CLAide::TemplateRunner.new(@name, "https://github.com/danger/dangerfile-gem-template")
39
+ runner.clone_template
40
+ runner.configure_template
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,30 @@
1
+ require "danger/danger_core/dangerfile_generator"
2
+
3
+ # Mainly so we can have a nice strucutre for commands
4
+
5
+ module Danger
6
+ class DangerfileCommand < Runner
7
+ self.summary = "Easily create you Dangerfiles."
8
+ self.command = "dangerfile"
9
+
10
+ self.abstract_command = true
11
+ def self.options
12
+ []
13
+ end
14
+ end
15
+ end
16
+
17
+ # Just a less verbose way of doing the Dangerfile from `danger init`.
18
+
19
+ module Danger
20
+ class DangerfileInit < DangerfileCommand
21
+ self.summary = "Create an example Dangerfile."
22
+ self.command = "init"
23
+
24
+ def run
25
+ content = DangerfileGenerator.create_dangerfile(".", cork)
26
+ File.write("Dangerfile", content)
27
+ cork.puts "Created" + "./Dangerfile".green
28
+ end
29
+ end
30
+ end
@@ -1,4 +1,5 @@
1
1
  require "danger/commands/init_helpers/interviewer"
2
+ require "danger/danger_core/dangerfile_generator"
2
3
  require "danger/ci_source/local_git_repo"
3
4
  require "yaml"
4
5
 
@@ -53,8 +54,7 @@ module Danger
53
54
  end
54
55
 
55
56
  def setup_dangerfile
56
- dir = Danger.gem_path
57
- content = File.read(File.join(dir, "lib", "assets", "DangerfileTemplate"))
57
+ content = DangerfileGenerator.create_dangerfile(".", cork)
58
58
  File.write("Dangerfile", content)
59
59
 
60
60
  ui.header "Step 1: Creating a starter Dangerfile"
@@ -19,6 +19,9 @@ module Danger
19
19
  require "danger/commands/plugins/plugin_json"
20
20
  require "danger/commands/plugins/plugin_readme"
21
21
 
22
+ require "danger/commands/dangerfile/init"
23
+ require "danger/commands/dangerfile/gem"
24
+
22
25
  attr_accessor :cork
23
26
 
24
27
  self.summary = "Run the Dangerfile."
@@ -68,10 +68,11 @@ module Danger
68
68
  super
69
69
  end
70
70
 
71
- def initialize(env_manager, cork_board)
71
+ # cork_board not being set comes from plugins #585
72
+ def initialize(env_manager, cork_board = nil)
72
73
  @plugins = {}
73
74
  @core_plugins = []
74
- @ui = cork_board
75
+ @ui = cork_board || Cork::Board.new(silent: false, verbose: false)
75
76
 
76
77
  # Triggers the core plugins
77
78
  @env = env_manager
@@ -0,0 +1,11 @@
1
+ module Danger
2
+ class DangerfileGenerator
3
+ # returns the string for a Dangerfile based on a folder's contents'
4
+ def self.create_dangerfile(_path, _ui)
5
+ # Use this template for now, but this is a really ripe place to
6
+ # improve now!
7
+ dir = Danger.gem_path
8
+ File.read(File.join(dir, "lib", "assets", "DangerfileTemplate"))
9
+ end
10
+ end
11
+ end
@@ -15,10 +15,20 @@ module Danger
15
15
  local_ci_source(env).validates_as_pr?(env)
16
16
  end
17
17
 
18
- def initialize(env, ui)
18
+ # @return [String] danger's default head branch
19
+ def self.danger_head_branch
20
+ "danger_head".freeze
21
+ end
22
+
23
+ # @return [String] danger's default base branch
24
+ def self.danger_base_branch
25
+ "danger_base".freeze
26
+ end
27
+
28
+ def initialize(env, ui = nil)
19
29
  ci_klass = self.class.local_ci_source(env)
20
30
  self.ci_source = ci_klass.new(env)
21
- self.ui = ui
31
+ self.ui = ui || Cork::Board.new(silent: false, verbose: false)
22
32
 
23
33
  RequestSources::RequestSource.available_request_sources.each do |klass|
24
34
  next unless self.ci_source.supports?(klass)
@@ -53,20 +63,12 @@ module Danger
53
63
  end
54
64
  end
55
65
 
56
- def meta_info_for_base
57
- scm.exec("--no-pager log #{EnvironmentManager.danger_base_branch} -n1")
58
- end
59
-
60
66
  def meta_info_for_head
61
67
  scm.exec("--no-pager log #{EnvironmentManager.danger_head_branch} -n1")
62
68
  end
63
69
 
64
- def self.danger_head_branch
65
- "danger_head"
66
- end
67
-
68
- def self.danger_base_branch
69
- "danger_base"
70
+ def meta_info_for_base
71
+ scm.exec("--no-pager log #{EnvironmentManager.danger_base_branch} -n1")
70
72
  end
71
73
 
72
74
  def raise_error_for_no_request_source(env, ui)
@@ -29,6 +29,10 @@ module Danger
29
29
  #
30
30
  # danger.import_dangerfile(gitlab: "ruby-grape/danger")
31
31
  #
32
+ # @example Run a Dangerfile from inside a repo branch and path
33
+ #
34
+ # danger.import_dangerfile(github: "ruby-grape/danger", branch: "custom", path: "path/to/Dangerfile")
35
+ #
32
36
  # @see danger/danger
33
37
  # @tags core, plugins
34
38
 
@@ -73,7 +77,7 @@ module Danger
73
77
  import_dangerfile_from_github(opts)
74
78
  elsif opts.kind_of?(Hash)
75
79
  if opts.key?(:github) || opts.key?(:gitlab)
76
- import_dangerfile_from_github(opts[:github] || opts[:gitlab])
80
+ import_dangerfile_from_github(opts[:github] || opts[:gitlab], opts[:branch], opts[:path])
77
81
  elsif opts.key?(:path)
78
82
  import_dangerfile_from_path(opts[:path])
79
83
  elsif opts.key?(:gem)
@@ -141,12 +145,16 @@ module Danger
141
145
  #
142
146
  # @param [String] slug
143
147
  # A slug that represents the repo where the Dangerfile is.
148
+ # @param [String] branch
149
+ # A branch from repo where the Dangerfile is.
150
+ # @param [String] path
151
+ # The path at the repo where Dangerfile is.
144
152
  # @return [void]
145
153
  #
146
- def import_dangerfile_from_github(slug)
154
+ def import_dangerfile_from_github(slug, branch = nil, path = nil)
147
155
  raise "`import_dangerfile_from_github` requires a string" unless slug.kind_of?(String)
148
156
  org, repo = slug.split("/")
149
- download_url = env.request_source.file_url(organisation: org, repository: repo, branch: "master", path: "Dangerfile")
157
+ download_url = env.request_source.file_url(organisation: org, repository: repo, branch: branch || "master", path: path || "Dangerfile")
150
158
  local_path = download(download_url)
151
159
  @dangerfile.parse(Pathname.new(local_path))
152
160
  end
@@ -208,7 +216,7 @@ module Danger
208
216
  def validate_file_contains_plugin!(file)
209
217
  content = IO.read(file)
210
218
 
211
- if content.scan(/class\s+(?<plugin_class>[\w]+)\s+<\s+Plugin/i).empty?
219
+ if content.scan(/class\s+(?<plugin_class>[\w]+)\s+<\s+((Danger::)?Plugin)/i).empty?
212
220
  raise("#{file} doesn't contain any valid danger plugin.")
213
221
  end
214
222
  end
@@ -37,7 +37,7 @@ module Danger
37
37
  end
38
38
 
39
39
  def ensure_commitish_exists!(commitish)
40
- exec("fetch") if exec("rev-parse --quiet --verify #{commitish}").empty?
40
+ exec("fetch") if exec("rev-parse --quiet --verify \"#{commitish}^{commit}\"").empty?
41
41
  end
42
42
 
43
43
  private
@@ -1,4 +1,4 @@
1
1
  module Danger
2
- VERSION = "3.4.0".freeze
2
+ VERSION = "3.5.0".freeze
3
3
  DESCRIPTION = "Like Unit Tests, but for your Team Culture.".freeze
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Orta Therox
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-09-29 00:00:00.000000000 Z
12
+ date: 2016-10-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: claide
@@ -29,16 +29,16 @@ dependencies:
29
29
  name: claide-plugins
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 0.9.0
34
+ version: 0.9.2
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 0.9.0
41
+ version: 0.9.2
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: git
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -374,7 +374,6 @@ files:
374
374
  - README.md
375
375
  - bin/danger
376
376
  - lib/assets/DangerfileTemplate
377
- - lib/assets/PluginTemplate.rb.template
378
377
  - lib/danger.rb
379
378
  - lib/danger/ci_source/bitrise.rb
380
379
  - lib/danger/ci_source/buildkite.rb
@@ -393,6 +392,8 @@ files:
393
392
  - lib/danger/ci_source/travis.rb
394
393
  - lib/danger/ci_source/xcode_server.rb
395
394
  - lib/danger/clients/rubygems_client.rb
395
+ - lib/danger/commands/dangerfile/gem.rb
396
+ - lib/danger/commands/dangerfile/init.rb
396
397
  - lib/danger/commands/init.rb
397
398
  - lib/danger/commands/init_helpers/interviewer.rb
398
399
  - lib/danger/commands/local.rb
@@ -410,6 +411,7 @@ files:
410
411
  - lib/danger/core_ext/string.rb
411
412
  - lib/danger/danger_core/dangerfile.rb
412
413
  - lib/danger/danger_core/dangerfile_dsl.rb
414
+ - lib/danger/danger_core/dangerfile_generator.rb
413
415
  - lib/danger/danger_core/environment_manager.rb
414
416
  - lib/danger/danger_core/executor.rb
415
417
  - lib/danger/danger_core/messages/markdown.rb
@@ -1,20 +0,0 @@
1
- module Danger
2
- class Dangerfile
3
- module DSL
4
- class [[CLASS_NAME]] < Plugin
5
- def run(parameter1: nil, parameter2: nil)
6
- if (pr_body + pr_title).include?("WIP")
7
- warn "Pull Request is Work in Progress"
8
- end
9
- end
10
-
11
- def self.description
12
- [
13
- "Describe what this plugin does",
14
- "and how the user can use it"
15
- ].join(" ")
16
- end
17
- end
18
- end
19
- end
20
- end