danger 0.8.2 → 0.8.3

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: 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: