danger 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 961961730193f38ada39854b1e3b14a665534539
4
- data.tar.gz: 161dfd213ef838bf04dc47c95cd3a59d5e745cc7
3
+ metadata.gz: e4921ce4e3c1ab439ca418a004aac9ee64d6e7ed
4
+ data.tar.gz: e3065925be50c02d3b800f0a824fead466d4f84e
5
5
  SHA512:
6
- metadata.gz: 9c298a712a18d76022aba76603f6946f03ef5999a2203c06c4cc34013e2131d9657fa3ad2972b0bbf9c406f9d6922f5d2677160068482aaf0fbd3572444a31df
7
- data.tar.gz: b657e664d71d270a6118bfe68033f039ac2604f969d9494b2e16631e4a9b65448b7e8de1842909e628da7a97aae65ba72939b7b9dc3e2783d8bd33ec62946056
6
+ metadata.gz: 336014b027d584aac76ed805f4f790cd35af88c22a85d1ee704de3321bd203af6e3cf236b78962c825e33d881048782903193e436b16180fc7f10357a3b23529
7
+ data.tar.gz: be97d88ff2b2f6749aebc7a3d2149e3df5439d6c3b4375f66a46ee5e13c356ce75fd7f14e9646413c8d82866eb913f5b2357e933f2fb1cd73219fee34b89a7da
data/README.md CHANGED
@@ -25,7 +25,13 @@ Add this line to your application's [Gemfile](https://guides.cocoapods.org/using
25
25
  gem 'danger'
26
26
  ```
27
27
 
28
- To get up and running quickly, just run
28
+ Then use Bundler to install the gem.
29
+
30
+ ```shell
31
+ bundle install
32
+ ```
33
+
34
+ Then, to get up and running quickly, just run
29
35
 
30
36
  ```
31
37
  bundle exec danger init
data/lib/danger.rb CHANGED
@@ -9,6 +9,7 @@ require "claide"
9
9
  require "colored"
10
10
  require "pathname"
11
11
  require "terminal-table"
12
+ require "cork"
12
13
 
13
14
  # Import all the Sources (CI, Request and SCM)
14
15
  Dir[File.expand_path('danger/*source/*.rb', File.dirname(__FILE__))].each do |file|
@@ -1,3 +1,5 @@
1
+ require 'set'
2
+
1
3
  module Danger
2
4
  module CISource
3
5
  # "abstract" CI class
@@ -7,6 +7,8 @@ module Danger
7
7
  self.summary = 'Helps you set up Danger.'
8
8
  self.command = 'init'
9
9
 
10
+ attr_accessor :ui
11
+
10
12
  def self.options
11
13
  [
12
14
  ['--impatient', "'I've not got all day here. Don't add any thematic delays please.'"],
@@ -15,14 +17,14 @@ module Danger
15
17
  end
16
18
 
17
19
  def initialize(argv)
18
- ui.no_delay = argv.flag?('impatient', false)
19
- ui.no_waiting = argv.flag?('mousey', false)
20
20
  @bot_name = File.basename(Dir.getwd).split(".").first.capitalize + "Bot"
21
21
  super
22
+ @ui = Interviewer.new(cork)
23
+ ui.no_delay = argv.flag?('impatient', false)
24
+ ui.no_waiting = argv.flag?('mousey', false)
22
25
  end
23
26
 
24
27
  def run
25
- ui = Interviewer.new
26
28
  ui.say "\nOK, thanks #{ENV['LOGNAME']}, have a seat and we'll get you started.\n".yellow
27
29
  ui.pause 1
28
30
 
@@ -38,10 +40,6 @@ module Danger
38
40
  thanks
39
41
  end
40
42
 
41
- def ui
42
- @ui ||= Interviewer.new
43
- end
44
-
45
43
  def show_todo_state
46
44
  ui.say "We need to do the following:\n"
47
45
  ui.pause 0.6
@@ -134,8 +132,9 @@ module Danger
134
132
  end
135
133
 
136
134
  def current_repo_slug
137
- @repo ||= Danger::CISource::LocalGitRepo.new
138
- @repo.repo_slug || "[Your/Repo]"
135
+ @git = GitRepo.new
136
+ repo_matches = @git.origins.match(%r{([\/:])([^\/]+\/[^\/.]+)(?:.git)?$})
137
+ repo_matches[2] || "[Your/Repo]"
139
138
  end
140
139
 
141
140
  def setup_danger_ci
@@ -1,9 +1,13 @@
1
1
  module Danger
2
2
  class Interviewer
3
- attr_accessor :no_delay, :no_waiting
3
+ attr_accessor :no_delay, :no_waiting, :ui
4
+
5
+ def initialize(cork_board)
6
+ @ui = cork_board
7
+ end
4
8
 
5
9
  def show_prompt
6
- print "> ".bold.green
10
+ ui.print "> ".bold.green
7
11
  end
8
12
 
9
13
  def yellow_bang
@@ -19,7 +23,7 @@ module Danger
19
23
  end
20
24
 
21
25
  def say(output)
22
- puts output
26
+ ui.puts output
23
27
  end
24
28
 
25
29
  def header(title)
@@ -39,40 +43,40 @@ module Danger
39
43
  def wait_for_return
40
44
  STDOUT.flush
41
45
  STDIN.gets unless @no_delay
42
- puts ""
46
+ ui.puts
43
47
  end
44
48
 
45
49
  def run_command(command, output_command = nil)
46
50
  output_command ||= command
47
- puts " " + output_command.magenta
51
+ ui.puts " " + output_command.magenta
48
52
  system command
49
53
  end
50
54
 
51
55
  def ask(question)
52
56
  answer = ""
53
57
  loop do
54
- puts "\n#{question}?"
58
+ ui.puts "\n#{question}?"
55
59
 
56
60
  show_prompt
57
61
  answer = STDIN.gets.chomp
58
62
 
59
63
  break if answer.empty?
60
64
 
61
- print "\nYou need to provide an answer."
65
+ ui.print "\nYou need to provide an answer."
62
66
  end
63
67
  answer
64
68
  end
65
69
 
66
70
  def ask_with_answers(question, possible_answers)
67
- print "\n#{question}? ["
71
+ ui.print "\n#{question}? ["
68
72
 
69
73
  print_info = proc do
70
74
  possible_answers.each_with_index do |answer, i|
71
75
  the_answer = (i == 0) ? answer.underline : answer
72
- print " " + the_answer
73
- print(" /") if i != possible_answers.length - 1
76
+ ui.print " " + the_answer
77
+ ui.print(" /") if i != possible_answers.length - 1
74
78
  end
75
- print " ]\n"
79
+ ui.print " ]\n"
76
80
  end
77
81
  print_info.call
78
82
 
@@ -88,12 +92,12 @@ module Danger
88
92
  # default to first answer
89
93
  if answer == ""
90
94
  answer = possible_answers[0].downcase
91
- puts "Using: " + answer.yellow
95
+ ui.puts "Using: " + answer.yellow
92
96
  end
93
97
 
94
98
  break if possible_answers.map(&:downcase).include? answer
95
99
 
96
- print "\nPossible answers are ["
100
+ ui.print "\nPossible answers are ["
97
101
  print_info.call
98
102
  end
99
103
 
@@ -27,25 +27,25 @@ module Danger
27
27
  ENV["LOCAL_GIT_PR_ID"] = @pr_num if @pr_num
28
28
 
29
29
  env = EnvironmentManager.new(ENV)
30
- dm = Dangerfile.new(env)
30
+ dm = Dangerfile.new(env, cork)
31
31
  dm.init_plugins
32
32
 
33
33
  source = dm.env.ci_source
34
34
  if source.nil? or source.repo_slug.empty?
35
- puts "danger local failed because it only works with GitHub projects at the moment. Sorry.".red
35
+ cork.puts "danger local failed because it only works with GitHub projects at the moment. Sorry.".red
36
36
  exit 0
37
37
  end
38
38
 
39
39
  gh = dm.env.request_source
40
40
 
41
- puts "Running your Dangerfile against this PR - https://#{gh.github_host}/#{source.repo_slug}/pull/#{source.pull_request_id}"
41
+ cork.puts "Running your Dangerfile against this PR - https://#{gh.host}/#{source.repo_slug}/pull/#{source.pull_request_id}"
42
42
 
43
43
  if verbose != true
44
- puts "Turning on --verbose"
44
+ cork.puts "Turning on --verbose"
45
45
  dm.verbose = true
46
46
  end
47
47
 
48
- puts ""
48
+ cork.puts
49
49
 
50
50
  # We can use tokenless here, as it's running on someone's computer
51
51
  # and is IP locked, as opposed to on the CI.
@@ -54,7 +54,7 @@ module Danger
54
54
  begin
55
55
  gh.fetch_details
56
56
  rescue Octokit::NotFound
57
- puts "Local repository was not found on GitHub. If you're trying to test a private repository please provide a valid API token through " + "DANGER_GITHUB_API_TOKEN".yellow + " environment variable."
57
+ cork.puts "Local repository was not found on GitHub. If you're trying to test a private repository please provide a valid API token through " + "DANGER_GITHUB_API_TOKEN".yellow + " environment variable."
58
58
  return
59
59
  end
60
60
 
@@ -6,9 +6,9 @@ module Danger
6
6
  def run
7
7
  require 'fileutils'
8
8
 
9
- puts "Must be lower case, and use a '_' between words. Do not use '.'".green
10
- puts "examples: 'number_of_emojis', 'ensure_pr_title_contains_keyword'".green
11
- puts "Name of your new plugin: "
9
+ cork.puts "Must be lower case, and use a '_' between words. Do not use '.'".green
10
+ cork.puts "examples: 'number_of_emojis', 'ensure_pr_title_contains_keyword'".green
11
+ cork.puts "Name of your new plugin: "
12
12
  name = STDIN.gets.strip
13
13
 
14
14
  dir = Danger.gem_path
@@ -22,13 +22,13 @@ module Danger
22
22
  raise "File '#{output_path}' already exists!" if File.exist?(output_path)
23
23
  File.write(output_path, content)
24
24
 
25
- puts ""
26
- puts "Successfully created new plugin at path '#{output_path}'".green
27
- puts "Add this to your `Dangerfile` to use it:"
28
- puts ""
29
- puts "#{name}(parameter1: 123, parameter2: \"Club Mate\")".blue
30
- puts ""
31
- puts "Enjoy ✨"
25
+ cork.puts ""
26
+ cork.puts "Successfully created new plugin at path '#{output_path}'".green
27
+ cork.puts "Add this to your `Dangerfile` to use it:"
28
+ cork.puts ""
29
+ cork.puts "#{name}(parameter1: 123, parameter2: \"Club Mate\")".blue
30
+ cork.puts ""
31
+ cork.puts "Enjoy ✨"
32
32
  end
33
33
  end
34
34
  end
@@ -10,12 +10,16 @@ module Danger
10
10
 
11
11
  self.plugin_prefixes = %w(claide danger)
12
12
 
13
+ attr_accessor :cork
14
+
13
15
  def initialize(argv)
14
16
  dangerfile = argv.option('dangerfile', 'Dangerfile')
15
17
  @dangerfile_path = dangerfile if File.exist? dangerfile
16
18
  @base = argv.option('base')
17
19
  @head = argv.option('head')
18
20
  @danger_id = argv.option('danger_id', 'danger')
21
+ @cork = Cork::Board.new(silent: argv.option('silent', false),
22
+ verbose: argv.option('verbose', false))
19
23
  super
20
24
  end
21
25
 
@@ -37,7 +41,7 @@ module Danger
37
41
 
38
42
  def run
39
43
  env = EnvironmentManager.new(ENV)
40
- dm = Dangerfile.new(env)
44
+ dm = Dangerfile.new(env, cork)
41
45
 
42
46
  if dm.env.pr?
43
47
  dm.verbose = verbose
@@ -61,7 +65,7 @@ module Danger
61
65
  dm.env.clean_up
62
66
  end
63
67
  else
64
- puts "Not a Pull Request - skipping `danger` run"
68
+ cork.puts "Not a Pull Request - skipping `danger` run"
65
69
  end
66
70
  end
67
71
 
@@ -14,7 +14,7 @@ module Danger
14
14
  class Dangerfile
15
15
  include Danger::Dangerfile::DSL
16
16
 
17
- attr_accessor :env, :verbose, :plugins
17
+ attr_accessor :env, :verbose, :plugins, :ui
18
18
 
19
19
  # @return [Pathname] the path where the Dangerfile was loaded from. It is nil
20
20
  # if the Dangerfile was generated programmatically.
@@ -64,9 +64,10 @@ module Danger
64
64
  super
65
65
  end
66
66
 
67
- def initialize(env_manager)
67
+ def initialize(env_manager, cork_board)
68
68
  @plugins = {}
69
69
  @core_plugins = []
70
+ @ui = cork_board
70
71
 
71
72
  # Triggers the core plugins
72
73
  @env = env_manager
@@ -140,9 +141,11 @@ module Danger
140
141
  params[:rows] = rows.each { |current| current[0] = current[0].yellow }
141
142
  params[:title] = "Danger v#{Danger::VERSION}\nDSL Attributes".green
142
143
 
143
- puts ""
144
- puts Terminal::Table.new(params)
145
- puts ""
144
+ ui.section('Info:') do
145
+ ui.puts
146
+ ui.puts Terminal::Table.new(params)
147
+ ui.puts
148
+ end
146
149
  end
147
150
 
148
151
  # Parses the file at a path, optionally takes the content of the file for DI
@@ -159,14 +162,14 @@ module Danger
159
162
 
160
163
  if contents.tr!('“”‘’‛', %(""'''))
161
164
  # Changes have been made
162
- puts "Your #{path.basename} has had smart quotes sanitised. " \
163
- 'To avoid issues in the future, you should not use ' \
164
- 'TextEdit for editing it. If you are not using TextEdit, ' \
165
- 'you should turn off smart quotes in your editor of choice.'.red
165
+ ui.puts "Your #{path.basename} has had smart quotes sanitised. " \
166
+ 'To avoid issues in the future, you should not use ' \
167
+ 'TextEdit for editing it. If you are not using TextEdit, ' \
168
+ 'you should turn off smart quotes in your editor of choice.'.red
166
169
  end
167
170
 
168
171
  if contents.include?("puts")
169
- puts "You used `puts` in your Dangerfile. To print out text to GitHub use `message` instead"
172
+ ui.puts "You used `puts` in your Dangerfile. To print out text to GitHub use `message` instead"
170
173
  end
171
174
 
172
175
  self.defined_in_file = path
@@ -188,30 +191,39 @@ module Danger
188
191
  status = status_report
189
192
  return if (status[:errors] + status[:warnings] + status[:messages] + status[:markdowns]).count == 0
190
193
 
191
- puts ""
192
- puts "danger results:"
193
- [:errors, :warnings, :messages].each do |current|
194
- params = {}
195
- params[:rows] = status[current].map { |item| [item] }
196
- next unless params[:rows].count > 0
197
- params[:title] = case current
198
- when :errors
199
- current.to_s.capitalize.red
200
- when :warnings
201
- current.to_s.capitalize.yellow
202
- else
203
- current.to_s.capitalize
204
- end
205
-
206
- puts ""
207
- puts Terminal::Table.new(params)
208
- puts ""
209
- end
194
+ ui.section('Results:') do
195
+ [:errors, :warnings, :messages].each do |key|
196
+ formatted = key.to_s.capitalize + ':'
197
+ title = case key
198
+ when :errors
199
+ formatted.red
200
+ when :warnings
201
+ formatted.yellow
202
+ else
203
+ formatted
204
+ end
205
+ rows = status[key]
206
+ print_list(title, rows)
207
+ end
210
208
 
211
- puts "Markdown: ".green if status[:markdowns].count > 0
212
- status[:markdowns].each do |current_markdown|
213
- puts current_markdown
209
+ if status[:markdowns].count > 0
210
+ ui.section('Markdown:') do
211
+ status[:markdowns].each do |current_markdown|
212
+ ui.puts current_markdown
213
+ end
214
+ end
215
+ end
214
216
  end
215
217
  end
218
+
219
+ private
220
+
221
+ def print_list(title, rows)
222
+ ui.title(title) do
223
+ rows.each do |row|
224
+ ui.puts("- [ ] #{row}")
225
+ end
226
+ end unless rows.empty?
227
+ end
216
228
  end
217
229
  end
@@ -19,7 +19,6 @@ module Danger
19
19
  # The markdown based message to be printed below the table
20
20
  def markdown(message)
21
21
  @markdowns << message
22
- puts "Printing markdown #{message}"
23
22
  end
24
23
 
25
24
  # @!group Core
@@ -31,7 +30,6 @@ module Danger
31
30
  # defaults to `true`.
32
31
  def message(message, sticky: true)
33
32
  @messages << Violation.new(message, sticky)
34
- puts "Printing message '#{message}'"
35
33
  end
36
34
 
37
35
  # @!group Core
@@ -44,7 +42,6 @@ module Danger
44
42
  def warn(message, sticky: true)
45
43
  return if should_ignore_violation(message)
46
44
  @warnings << Violation.new(message, sticky)
47
- puts "Printing warning '#{message}'"
48
45
  end
49
46
 
50
47
  # @!group Core
@@ -58,7 +55,6 @@ module Danger
58
55
  def fail(message, sticky: true)
59
56
  return if should_ignore_violation(message)
60
57
  @errors << Violation.new(message, sticky)
61
- puts "Raising error '#{message}'"
62
58
  end
63
59
 
64
60
  def status_report
@@ -38,15 +38,15 @@ module Danger
38
38
 
39
39
  def setup_danger_branches
40
40
  # we can use a github specific feature here:
41
- pull_id = self.ci_source.pull_request_id
42
- test_branch = self.pr_json[:base][:sha]
41
+ base_commit = self.pr_json[:base][:sha]
42
+ head_commit = self.scm.head_commit
43
43
 
44
44
  # Next, we want to ensure that we have a version of the current branch at a known location
45
- self.scm.exec "branch #{EnvironmentManager.danger_base_branch} #{test_branch}"
45
+ self.scm.exec "branch #{EnvironmentManager.danger_base_branch} #{base_commit}"
46
46
 
47
47
  # OK, so we want to ensure that we have a known head branch, this will always represent
48
48
  # the head of the PR ( e.g. the most recent commit that will be merged. )
49
- self.scm.exec "fetch origin +refs/pull/#{pull_id}/merge:#{EnvironmentManager.danger_head_branch}"
49
+ self.scm.exec "branch #{EnvironmentManager.danger_head_branch} #{head_commit}"
50
50
  end
51
51
 
52
52
  def fetch_details
@@ -106,23 +106,32 @@ module Danger
106
106
  details_url: comment_result['html_url'])
107
107
  end
108
108
 
109
- def submit_pull_request_status!(warnings: nil, errors: nil, details_url: nil)
109
+ def submit_pull_request_status!(warnings: [], errors: [], details_url: [])
110
110
  status = (errors.count == 0 ? 'success' : 'failure')
111
111
  message = generate_github_description(warnings: warnings, errors: errors)
112
- client.create_status(ci_source.repo_slug, latest_pr_commit_ref, status, {
113
- description: message,
114
- context: "danger/danger",
115
- target_url: details_url
116
- })
117
- rescue
118
- # This usually means the user has no commit access to this repo
119
- # That's always the case for open source projects where you can only
120
- # use a read-only GitHub account
121
- if errors.count > 0
122
- # We need to fail the actual build here
123
- abort("\nDanger has failed this build. \nFound #{'error'.danger_pluralize(errors.count)} and I don't have write access to the PR set a PR status.")
124
- else
125
- puts message
112
+
113
+ latest_pr_commit_ref = self.pr_json[:head][:sha]
114
+
115
+ if latest_pr_commit_ref.empty? || latest_pr_commit_ref.nil?
116
+ raise "Couldn't find a commit to update its status".red
117
+ end
118
+
119
+ begin
120
+ client.create_status(ci_source.repo_slug, latest_pr_commit_ref, status, {
121
+ description: message,
122
+ context: "danger/danger",
123
+ target_url: details_url
124
+ })
125
+ rescue
126
+ # This usually means the user has no commit access to this repo
127
+ # That's always the case for open source projects where you can only
128
+ # use a read-only GitHub account
129
+ if errors.count > 0
130
+ # We need to fail the actual build here
131
+ abort("\nDanger has failed this build. \nFound #{'error'.danger_pluralize(errors.count)} and I don't have write access to the PR set a PR status.")
132
+ else
133
+ puts message
134
+ end
126
135
  end
127
136
  end
128
137
 
@@ -16,6 +16,10 @@ module Danger
16
16
  `git #{string}`.strip
17
17
  end
18
18
 
19
+ def head_commit
20
+ exec "rev-parse HEAD"
21
+ end
22
+
19
23
  def origins
20
24
  exec "remote show origin -n | grep \"Fetch URL\" | cut -d ':' -f 2-"
21
25
  end
@@ -1,4 +1,4 @@
1
1
  module Danger
2
- VERSION = "0.8.2".freeze
2
+ VERSION = "0.8.3".freeze
3
3
  DESCRIPTION = "Automate your PR etiquette.".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: 0.8.2
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Orta Therox
@@ -9,36 +9,36 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-06-09 00:00:00.000000000 Z
12
+ date: 2016-06-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: claide
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: '1.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: '1.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: git
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: '1'
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'
41
+ version: '1'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: colored
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -57,14 +57,14 @@ dependencies:
57
57
  name: faraday
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
@@ -109,6 +109,20 @@ dependencies:
109
109
  - - "~>"
110
110
  - !ruby/object:Gem::Version
111
111
  version: '1'
112
+ - !ruby/object:Gem::Dependency
113
+ name: cork
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '0.1'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '0.1'
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: bundler
114
128
  requirement: !ruby/object:Gem::Requirement
@@ -141,72 +155,72 @@ dependencies:
141
155
  name: rspec
142
156
  requirement: !ruby/object:Gem::Requirement
143
157
  requirements:
144
- - - ">="
158
+ - - "~>"
145
159
  - !ruby/object:Gem::Version
146
- version: '0'
160
+ version: '3.4'
147
161
  type: :development
148
162
  prerelease: false
149
163
  version_requirements: !ruby/object:Gem::Requirement
150
164
  requirements:
151
- - - ">="
165
+ - - "~>"
152
166
  - !ruby/object:Gem::Version
153
- version: '0'
167
+ version: '3.4'
154
168
  - !ruby/object:Gem::Dependency
155
169
  name: webmock
156
170
  requirement: !ruby/object:Gem::Requirement
157
171
  requirements:
158
- - - ">="
172
+ - - "~>"
159
173
  - !ruby/object:Gem::Version
160
- version: '0'
174
+ version: '2.1'
161
175
  type: :development
162
176
  prerelease: false
163
177
  version_requirements: !ruby/object:Gem::Requirement
164
178
  requirements:
165
- - - ">="
179
+ - - "~>"
166
180
  - !ruby/object:Gem::Version
167
- version: '0'
181
+ version: '2.1'
168
182
  - !ruby/object:Gem::Dependency
169
183
  name: pry
170
184
  requirement: !ruby/object:Gem::Requirement
171
185
  requirements:
172
- - - ">="
186
+ - - "~>"
173
187
  - !ruby/object:Gem::Version
174
- version: '0'
188
+ version: '0.10'
175
189
  type: :development
176
190
  prerelease: false
177
191
  version_requirements: !ruby/object:Gem::Requirement
178
192
  requirements:
179
- - - ">="
193
+ - - "~>"
180
194
  - !ruby/object:Gem::Version
181
- version: '0'
195
+ version: '0.10'
182
196
  - !ruby/object:Gem::Dependency
183
197
  name: rubocop
184
198
  requirement: !ruby/object:Gem::Requirement
185
199
  requirements:
186
200
  - - "~>"
187
201
  - !ruby/object:Gem::Version
188
- version: 0.38.0
202
+ version: '0.38'
189
203
  type: :development
190
204
  prerelease: false
191
205
  version_requirements: !ruby/object:Gem::Requirement
192
206
  requirements:
193
207
  - - "~>"
194
208
  - !ruby/object:Gem::Version
195
- version: 0.38.0
209
+ version: '0.38'
196
210
  - !ruby/object:Gem::Dependency
197
211
  name: yard
198
212
  requirement: !ruby/object:Gem::Requirement
199
213
  requirements:
200
- - - ">="
214
+ - - "~>"
201
215
  - !ruby/object:Gem::Version
202
- version: '0'
216
+ version: '0.8'
203
217
  type: :development
204
218
  prerelease: false
205
219
  version_requirements: !ruby/object:Gem::Requirement
206
220
  requirements:
207
- - - ">="
221
+ - - "~>"
208
222
  - !ruby/object:Gem::Version
209
- version: '0'
223
+ version: '0.8'
210
224
  - !ruby/object:Gem::Dependency
211
225
  name: listen
212
226
  requirement: !ruby/object:Gem::Requirement
@@ -225,30 +239,30 @@ dependencies:
225
239
  name: guard
226
240
  requirement: !ruby/object:Gem::Requirement
227
241
  requirements:
228
- - - ">="
242
+ - - "~>"
229
243
  - !ruby/object:Gem::Version
230
- version: '0'
244
+ version: '2.14'
231
245
  type: :development
232
246
  prerelease: false
233
247
  version_requirements: !ruby/object:Gem::Requirement
234
248
  requirements:
235
- - - ">="
249
+ - - "~>"
236
250
  - !ruby/object:Gem::Version
237
- version: '0'
251
+ version: '2.14'
238
252
  - !ruby/object:Gem::Dependency
239
253
  name: guard-rspec
240
254
  requirement: !ruby/object:Gem::Requirement
241
255
  requirements:
242
- - - ">="
256
+ - - "~>"
243
257
  - !ruby/object:Gem::Version
244
- version: '0'
258
+ version: '4.7'
245
259
  type: :development
246
260
  prerelease: false
247
261
  version_requirements: !ruby/object:Gem::Requirement
248
262
  requirements:
249
- - - ">="
263
+ - - "~>"
250
264
  - !ruby/object:Gem::Version
251
- version: '0'
265
+ version: '4.7'
252
266
  description: Create a Dangerfile to introspect your pull request in CI, makes it easy
253
267
  to enforce social conventions like changelogs and tests.
254
268
  email: