danger 0.8.5 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -1
  3. data/bin/danger +2 -2
  4. data/lib/danger.rb +13 -13
  5. data/lib/danger/ci_source/buildkite.rb +5 -5
  6. data/lib/danger/ci_source/ci_source.rb +3 -3
  7. data/lib/danger/ci_source/circle.rb +13 -13
  8. data/lib/danger/ci_source/circle_api.rb +4 -4
  9. data/lib/danger/ci_source/drone.rb +5 -5
  10. data/lib/danger/ci_source/jenkins.rb +4 -4
  11. data/lib/danger/ci_source/local_git_repo.rb +13 -13
  12. data/lib/danger/ci_source/semaphore.rb +5 -5
  13. data/lib/danger/ci_source/surf.rb +24 -0
  14. data/lib/danger/ci_source/teamcity.rb +4 -4
  15. data/lib/danger/ci_source/travis.rb +6 -6
  16. data/lib/danger/ci_source/xcode_server.rb +2 -2
  17. data/lib/danger/commands/init.rb +93 -82
  18. data/lib/danger/commands/init_helpers/interviewer.rb +15 -15
  19. data/lib/danger/commands/local.rb +13 -13
  20. data/lib/danger/commands/plugins/plugin_lint.rb +11 -8
  21. data/lib/danger/commands/plugins/plugin_readme.rb +15 -11
  22. data/lib/danger/commands/runner.rb +31 -20
  23. data/lib/danger/core_ext/string.rb +3 -3
  24. data/lib/danger/danger_core/dangerfile.rb +31 -31
  25. data/lib/danger/danger_core/dangerfile_dsl.rb +1 -1
  26. data/lib/danger/danger_core/environment_manager.rb +6 -6
  27. data/lib/danger/danger_core/plugins/dangerfile_git_plugin.rb +5 -5
  28. data/lib/danger/danger_core/plugins/dangerfile_github_plugin.rb +2 -2
  29. data/lib/danger/danger_core/plugins/dangerfile_import_plugin.rb +9 -9
  30. data/lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb +3 -3
  31. data/lib/danger/danger_core/standard_error.rb +6 -6
  32. data/lib/danger/plugin_support/plugin.rb +1 -1
  33. data/lib/danger/plugin_support/plugin_file_resolver.rb +6 -6
  34. data/lib/danger/plugin_support/plugin_parser.rb +75 -31
  35. data/lib/danger/request_source/request_source.rb +4 -4
  36. data/lib/danger/scm_source/git_repo.rb +3 -3
  37. data/lib/danger/version.rb +2 -2
  38. metadata +17 -4
  39. data/lib/danger/commands/plugins/plugin_abstract.rb +0 -11
  40. data/lib/danger/commands/plugins/plugin_new.rb +0 -34
@@ -7,19 +7,19 @@ module Danger
7
7
  end
8
8
 
9
9
  def show_prompt
10
- ui.print '> '.bold.green
10
+ ui.print "> ".bold.green
11
11
  end
12
12
 
13
13
  def yellow_bang
14
- '! '.yellow
14
+ "! ".yellow
15
15
  end
16
16
 
17
17
  def green_bang
18
- '! '.green
18
+ "! ".green
19
19
  end
20
20
 
21
21
  def red_bang
22
- '! '.red
22
+ "! ".red
23
23
  end
24
24
 
25
25
  def say(output)
@@ -28,12 +28,12 @@ module Danger
28
28
 
29
29
  def header(title)
30
30
  say title.yellow
31
- say ''
31
+ say ""
32
32
  pause 0.6
33
33
  end
34
34
 
35
35
  def link(url)
36
- say ' -> ' + url.underline + "\n"
36
+ say " -> " + url.underline + "\n"
37
37
  end
38
38
 
39
39
  def pause(time)
@@ -48,12 +48,12 @@ module Danger
48
48
 
49
49
  def run_command(command, output_command = nil)
50
50
  output_command ||= command
51
- ui.puts ' ' + output_command.magenta
51
+ ui.puts " " + output_command.magenta
52
52
  system command
53
53
  end
54
54
 
55
55
  def ask(question)
56
- answer = ''
56
+ answer = ""
57
57
  loop do
58
58
  ui.puts "\n#{question}?"
59
59
 
@@ -73,26 +73,26 @@ module Danger
73
73
  print_info = proc do
74
74
  possible_answers.each_with_index do |answer, i|
75
75
  the_answer = (i == 0) ? answer.underline : answer
76
- ui.print ' ' + the_answer
77
- ui.print(' /') if i != possible_answers.length - 1
76
+ ui.print " " + the_answer
77
+ ui.print(" /") if i != possible_answers.length - 1
78
78
  end
79
79
  ui.print " ]\n"
80
80
  end
81
81
  print_info.call
82
82
 
83
- answer = ''
83
+ answer = ""
84
84
 
85
85
  loop do
86
86
  show_prompt
87
87
  answer = @no_waiting ? possible_answers[0].downcase : STDIN.gets.downcase.chomp
88
88
 
89
- answer = 'yes' if answer == 'y'
90
- answer = 'no' if answer == 'n'
89
+ answer = "yes" if answer == "y"
90
+ answer = "no" if answer == "n"
91
91
 
92
92
  # default to first answer
93
- if answer == ''
93
+ if answer == ""
94
94
  answer = possible_answers[0].downcase
95
- ui.puts 'Using: ' + answer.yellow
95
+ ui.puts "Using: " + answer.yellow
96
96
  end
97
97
 
98
98
  break if possible_answers.map(&:downcase).include? answer
@@ -1,30 +1,30 @@
1
1
  module Danger
2
2
  class Local < Runner
3
- self.summary = 'Run the Dangerfile locally.'
4
- self.command = 'local'
3
+ self.summary = "Run the Dangerfile locally."
4
+ self.command = "local"
5
5
 
6
6
  def initialize(argv)
7
- @dangerfile_path = 'Dangerfile' if File.exist? 'Dangerfile'
8
- @pr_num = argv.option('use-merged-pr')
7
+ @dangerfile_path = "Dangerfile" if File.exist? "Dangerfile"
8
+ @pr_num = argv.option("use-merged-pr")
9
9
  super
10
10
  end
11
11
 
12
12
  def self.options
13
13
  [
14
- ['--use-merged-pr=[#id]', 'The ID of an already merged PR inside your history to use as a reference for the local run.']
14
+ ["--use-merged-pr=[#id]", "The ID of an already merged PR inside your history to use as a reference for the local run."]
15
15
  ].concat(super)
16
16
  end
17
17
 
18
18
  def validate!
19
19
  super
20
20
  unless @dangerfile_path
21
- help! 'Could not find a Dangerfile.'
21
+ help! "Could not find a Dangerfile."
22
22
  end
23
23
  end
24
24
 
25
25
  def run
26
- ENV['DANGER_USE_LOCAL_GIT'] = 'YES'
27
- ENV['LOCAL_GIT_PR_ID'] = @pr_num if @pr_num
26
+ ENV["DANGER_USE_LOCAL_GIT"] = "YES"
27
+ ENV["LOCAL_GIT_PR_ID"] = @pr_num if @pr_num
28
28
 
29
29
  env = EnvironmentManager.new(ENV)
30
30
  dm = Dangerfile.new(env, cork)
@@ -32,7 +32,7 @@ module Danger
32
32
 
33
33
  source = dm.env.ci_source
34
34
  if source.nil? or source.repo_slug.empty?
35
- cork.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
 
@@ -41,20 +41,20 @@ module Danger
41
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
- cork.puts 'Turning on --verbose'
44
+ cork.puts "Turning on --verbose"
45
45
  dm.verbose = true
46
46
  end
47
47
 
48
48
  cork.puts
49
49
 
50
50
  # We can use tokenless here, as it's running on someone's computer
51
- # and is IP locked, as opposed to on the CI.
51
+ # and is IP locked, as opposed to on the CI.
52
52
  gh.support_tokenless_auth = true
53
53
 
54
54
  begin
55
55
  gh.fetch_details
56
56
  rescue Octokit::NotFound
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.'
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
 
@@ -63,7 +63,7 @@ module Danger
63
63
  begin
64
64
  dm.env.fill_environment_vars
65
65
  dm.env.ensure_danger_branches_are_setup
66
- dm.env.scm.diff_for_folder('.', from: Danger::EnvironmentManager.danger_base_branch, to: Danger::EnvironmentManager.danger_head_branch)
66
+ dm.env.scm.diff_for_folder(".", from: Danger::EnvironmentManager.danger_base_branch, to: Danger::EnvironmentManager.danger_head_branch)
67
67
  dm.parse(Pathname.new(@dangerfile_path))
68
68
  dm.print_results
69
69
  ensure
@@ -1,18 +1,21 @@
1
- require 'danger/commands/plugins/plugin_abstract'
2
- require 'danger/plugin_support/plugin_parser'
3
- require 'danger/plugin_support/plugin_file_resolver'
1
+ require "danger/plugin_support/plugin_parser"
2
+ require "danger/plugin_support/plugin_file_resolver"
4
3
 
5
4
  module Danger
6
- class PluginLint < PluginAbstract
7
- self.summary = 'Lints a plugin'
8
- self.command = 'lint'
5
+ class PluginLint < CLAide::Command::Plugins
6
+ self.summary = "Lints a plugin"
7
+ self.command = "lint"
8
+
9
+ attr_accessor :cork
9
10
 
10
11
  def initialize(argv)
11
12
  @refs = argv.arguments! unless argv.arguments.empty?
13
+ @cork = Cork::Board.new(silent: argv.option("silent", false),
14
+ verbose: argv.option("verbose", false))
12
15
  super
13
16
  end
14
17
 
15
- self.summary = 'Lint plugins from files, gems or the current folder. Outputs JSON array representation of Plugins on success.'
18
+ self.summary = "Lint plugins from files, gems or the current folder. Outputs JSON array representation of Plugins on success."
16
19
 
17
20
  self.description = <<-DESC
18
21
  Converts a collection of file paths of Danger plugins into a JSON format.
@@ -21,7 +24,7 @@ module Danger
21
24
  DESC
22
25
 
23
26
  self.arguments = [
24
- CLAide::Argument.new('Paths, Gems or Nothing', false, true)
27
+ CLAide::Argument.new("Paths, Gems or Nothing", false, true)
25
28
  ]
26
29
 
27
30
  def run
@@ -1,19 +1,23 @@
1
- require 'danger/commands/plugins/plugin_abstract'
2
- require 'danger/plugin_support/plugin_parser'
3
- require 'danger/plugin_support/plugin_file_resolver'
4
- require 'json'
1
+ require "danger/plugin_support/plugin_parser"
2
+ require "danger/plugin_support/plugin_file_resolver"
3
+ require "json"
4
+ require "erb"
5
5
 
6
6
  module Danger
7
- class PluginReadme < PluginAbstract
8
- self.summary = 'Generates a README from a set of plugins'
9
- self.command = 'readme'
7
+ class PluginReadme < CLAide::Command::Plugins
8
+ self.summary = "Generates a README from a set of plugins"
9
+ self.command = "readme"
10
+
11
+ attr_accessor :cork
10
12
 
11
13
  def initialize(argv)
12
14
  @refs = argv.arguments! unless argv.arguments.empty?
15
+ @cork = Cork::Board.new(silent: argv.option("silent", false),
16
+ verbose: argv.option("verbose", false))
13
17
  super
14
18
  end
15
19
 
16
- self.summary = 'Lint plugins from files, gems or the current folder. Outputs JSON array representation of Plugins on success.'
20
+ self.summary = "Lint plugins from files, gems or the current folder. Outputs JSON array representation of Plugins on success."
17
21
 
18
22
  self.description = <<-DESC
19
23
  Converts a collection of file paths of Danger plugins into a format usable in a README.
@@ -21,7 +25,7 @@ module Danger
21
25
  DESC
22
26
 
23
27
  self.arguments = [
24
- CLAide::Argument.new('Paths, Gems or Nothing', false, true)
28
+ CLAide::Argument.new("Paths, Gems or Nothing", false, true)
25
29
  ]
26
30
 
27
31
  attr_accessor :json, :markdown
@@ -35,8 +39,8 @@ module Danger
35
39
  self.markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, no_intra_emphasis: true)
36
40
  self.json = JSON.parse(parser.to_json)
37
41
 
38
- template = File.join(Danger.gem_path, 'lib/danger/plugin_support/templates/readme_table.html.erb')
39
- cork.puts ERB.new(File.read(template), 0, '-').result(binding)
42
+ template = File.join(Danger.gem_path, "lib/danger/plugin_support/templates/readme_table.html.erb")
43
+ cork.puts ERB.new(File.read(template), 0, "-").result(binding)
40
44
  end
41
45
  end
42
46
  end
@@ -1,11 +1,22 @@
1
1
  module Danger
2
2
  class Runner < CLAide::Command
3
- require 'danger/commands/init'
4
- require 'danger/commands/local'
5
- require 'danger/commands/plugins/plugin_abstract'
6
-
7
- self.summary = 'Run the Dangerfile.'
8
- self.command = 'danger'
3
+ require "danger/commands/init"
4
+ require "danger/commands/local"
5
+
6
+ # manually set claide plugins as a subcommand
7
+ require "claide_plugin"
8
+ @subcommands << CLAide::Command::Plugins
9
+ CLAide::Plugins.config =
10
+ CLAide::Plugins::Configuration.new("Danger",
11
+ "danger",
12
+ "https://raw.githubusercontent.com/danger/danger.systems/master/plugins-search-generated.json",
13
+ "https://github.com/danger/danger-plugin-template")
14
+
15
+ require "danger/commands/plugins/plugin_lint"
16
+ require "danger/commands/plugins/plugin_readme"
17
+
18
+ self.summary = "Run the Dangerfile."
19
+ self.command = "danger"
9
20
  self.version = Danger::VERSION
10
21
 
11
22
  self.plugin_prefixes = %w(claide danger)
@@ -13,29 +24,29 @@ module Danger
13
24
  attr_accessor :cork
14
25
 
15
26
  def initialize(argv)
16
- dangerfile = argv.option('dangerfile', 'Dangerfile')
27
+ dangerfile = argv.option("dangerfile", "Dangerfile")
17
28
  @dangerfile_path = dangerfile if File.exist? dangerfile
18
- @base = argv.option('base')
19
- @head = argv.option('head')
20
- @danger_id = argv.option('danger_id', 'danger')
21
- @cork = Cork::Board.new(silent: argv.option('silent', false),
22
- verbose: argv.option('verbose', false))
29
+ @base = argv.option("base")
30
+ @head = argv.option("head")
31
+ @danger_id = argv.option("danger_id", "danger")
32
+ @cork = Cork::Board.new(silent: argv.option("silent", false),
33
+ verbose: argv.option("verbose", false))
23
34
  super
24
35
  end
25
36
 
26
37
  def validate!
27
38
  super
28
39
  if self.class == Runner && !@dangerfile_path
29
- help! 'Could not find a Dangerfile.'
40
+ help! "Could not find a Dangerfile."
30
41
  end
31
42
  end
32
43
 
33
44
  def self.options
34
45
  [
35
- ['--base=[master|dev|stable]', 'A branch/tag/commit to use as the base of the diff'],
36
- ['--head=[master|dev|stable]', 'A branch/tag/commit to use as the head'],
37
- ['--dangerfile=<path/to/dangerfile>', 'The location of your Dangerfile'],
38
- ['--danger_id=<id>', 'The identifier of this Danger instance']
46
+ ["--base=[master|dev|stable]", "A branch/tag/commit to use as the base of the diff"],
47
+ ["--head=[master|dev|stable]", "A branch/tag/commit to use as the head"],
48
+ ["--dangerfile=<path/to/dangerfile>", "The location of your Dangerfile"],
49
+ ["--danger_id=<id>", "The identifier of this Danger instance"]
39
50
  ].concat(super)
40
51
  end
41
52
 
@@ -55,7 +66,7 @@ module Danger
55
66
  # Offer the chance for a user to specify a branch through the command line
56
67
  ci_base = @base || EnvironmentManager.danger_base_branch
57
68
  ci_head = @head || EnvironmentManager.danger_head_branch
58
- dm.env.scm.diff_for_folder('.', from: ci_base, to: ci_head)
69
+ dm.env.scm.diff_for_folder(".", from: ci_base, to: ci_head)
59
70
 
60
71
  dm.parse Pathname.new(@dangerfile_path)
61
72
 
@@ -65,7 +76,7 @@ module Danger
65
76
  dm.env.clean_up
66
77
  end
67
78
  else
68
- cork.puts 'Not a Pull Request - skipping `danger` run'
79
+ cork.puts "Not a Pull Request - skipping `danger` run"
69
80
  end
70
81
  end
71
82
 
@@ -81,7 +92,7 @@ module Danger
81
92
  raise exception if exception.kind_of?(SystemExit)
82
93
  message = "#{exception.message.red} (#{exception.class.to_s.yellow})"
83
94
  if exception.backtrace
84
- danger_lib = File.expand_path('../../..', __FILE__)
95
+ danger_lib = File.expand_path("../../..", __FILE__)
85
96
  message << "\n\t" << exception.backtrace.reverse_each.
86
97
  drop_while { |bt| !bt.start_with?(danger_lib) }.reverse.
87
98
  join("\n\t")
@@ -1,6 +1,6 @@
1
1
  class String
2
2
  def danger_class
3
- split('_').collect!(&:capitalize).join
3
+ split("_").collect!(&:capitalize).join
4
4
  end
5
5
 
6
6
  def danger_pluralize(count)
@@ -8,10 +8,10 @@ class String
8
8
  end
9
9
 
10
10
  def danger_underscore
11
- self.gsub(/::/, '/').
11
+ self.gsub(/::/, "/").
12
12
  gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
13
13
  gsub(/([a-z\d])([A-Z])/, '\1_\2').
14
- tr('-', '_').
14
+ tr("-", "_").
15
15
  downcase
16
16
  end
17
17
  end
@@ -1,14 +1,14 @@
1
1
  # So much was ripped direct from CocoaPods-Core - thanks!
2
2
 
3
- require 'danger/danger_core/dangerfile_dsl'
4
- require 'danger/danger_core/standard_error'
3
+ require "danger/danger_core/dangerfile_dsl"
4
+ require "danger/danger_core/standard_error"
5
5
 
6
- require 'danger/danger_core/plugins/dangerfile_messaging_plugin'
7
- require 'danger/danger_core/plugins/dangerfile_import_plugin'
8
- require 'danger/danger_core/plugins/dangerfile_git_plugin'
9
- require 'danger/danger_core/plugins/dangerfile_github_plugin'
6
+ require "danger/danger_core/plugins/dangerfile_messaging_plugin"
7
+ require "danger/danger_core/plugins/dangerfile_import_plugin"
8
+ require "danger/danger_core/plugins/dangerfile_git_plugin"
9
+ require "danger/danger_core/plugins/dangerfile_github_plugin"
10
10
 
11
- require 'danger/danger_core/plugins/dangerfile_github_plugin'
11
+ require "danger/danger_core/plugins/dangerfile_github_plugin"
12
12
 
13
13
  module Danger
14
14
  class Dangerfile
@@ -25,7 +25,7 @@ module Danger
25
25
  # presented to the user.
26
26
  #
27
27
  def to_s
28
- 'Dangerfile'
28
+ "Dangerfile"
29
29
  end
30
30
 
31
31
  # These are the classes that are allowed to also use method_missing
@@ -73,7 +73,7 @@ module Danger
73
73
  @env = env_manager
74
74
 
75
75
  # Triggers local plugins from the root of a project
76
- Dir['./danger_plugins/*.rb'].each do |file|
76
+ Dir["./danger_plugins/*.rb"].each do |file|
77
77
  require File.expand_path(file)
78
78
  end
79
79
 
@@ -115,10 +115,10 @@ module Danger
115
115
  methods.map do |method|
116
116
  case method
117
117
  when :api
118
- value = 'Octokit::Client'
118
+ value = "Octokit::Client"
119
119
 
120
120
  when :pr_json
121
- value = '[Skipped]'
121
+ value = "[Skipped]"
122
122
 
123
123
  when :pr_body
124
124
  value = plugin.send(method)
@@ -140,20 +140,20 @@ module Danger
140
140
  def print_known_info
141
141
  rows = []
142
142
  rows += method_values_for_plugin_hashes(core_dsl_attributes)
143
- rows << ['---', '---']
143
+ rows << ["---", "---"]
144
144
  rows += method_values_for_plugin_hashes(external_dsl_attributes)
145
- rows << ['---', '---']
146
- rows << ['SCM', env.scm.class]
147
- rows << ['Source', env.ci_source.class]
148
- rows << ['Requests', env.request_source.class]
149
- rows << ['Base Commit', env.meta_info_for_base]
150
- rows << ['Head Commit', env.meta_info_for_head]
145
+ rows << ["---", "---"]
146
+ rows << ["SCM", env.scm.class]
147
+ rows << ["Source", env.ci_source.class]
148
+ rows << ["Requests", env.request_source.class]
149
+ rows << ["Base Commit", env.meta_info_for_base]
150
+ rows << ["Head Commit", env.meta_info_for_head]
151
151
 
152
152
  params = {}
153
153
  params[:rows] = rows.each { |current| current[0] = current[0].yellow }
154
154
  params[:title] = "Danger v#{Danger::VERSION}\nDSL Attributes".green
155
155
 
156
- ui.section('Info:') do
156
+ ui.section("Info:") do
157
157
  ui.puts
158
158
  ui.puts Terminal::Table.new(params)
159
159
  ui.puts
@@ -165,23 +165,23 @@ module Danger
165
165
  def parse(path, contents = nil)
166
166
  print_known_info if verbose
167
167
 
168
- contents ||= File.open(path, 'r:utf-8', &:read)
168
+ contents ||= File.open(path, "r:utf-8", &:read)
169
169
 
170
170
  # Work around for Rubinius incomplete encoding in 1.9 mode
171
- if contents.respond_to?(:encoding) && contents.encoding.name != 'UTF-8'
172
- contents.encode!('UTF-8')
171
+ if contents.respond_to?(:encoding) && contents.encoding.name != "UTF-8"
172
+ contents.encode!("UTF-8")
173
173
  end
174
174
 
175
- if contents.tr!('“”‘’‛', %(""'''))
175
+ if contents.tr!("“”‘’‛", %(""'''))
176
176
  # Changes have been made
177
177
  ui.puts "Your #{path.basename} has had smart quotes sanitised. " \
178
- 'To avoid issues in the future, you should not use ' \
179
- 'TextEdit for editing it. If you are not using TextEdit, ' \
180
- 'you should turn off smart quotes in your editor of choice.'.red
178
+ "To avoid issues in the future, you should not use " \
179
+ "TextEdit for editing it. If you are not using TextEdit, " \
180
+ "you should turn off smart quotes in your editor of choice.".red
181
181
  end
182
182
 
183
- if contents.include?('puts')
184
- ui.puts 'You used `puts` in your Dangerfile. To print out text to GitHub use `message` instead'
183
+ if contents.include?("puts")
184
+ ui.puts "You used `puts` in your Dangerfile. To print out text to GitHub use `message` instead"
185
185
  end
186
186
 
187
187
  self.defined_in_file = path
@@ -203,9 +203,9 @@ module Danger
203
203
  status = status_report
204
204
  return if (status[:errors] + status[:warnings] + status[:messages] + status[:markdowns]).count == 0
205
205
 
206
- ui.section('Results:') do
206
+ ui.section("Results:") do
207
207
  [:errors, :warnings, :messages].each do |key|
208
- formatted = key.to_s.capitalize + ':'
208
+ formatted = key.to_s.capitalize + ":"
209
209
  title = case key
210
210
  when :errors
211
211
  formatted.red
@@ -219,7 +219,7 @@ module Danger
219
219
  end
220
220
 
221
221
  if status[:markdowns].count > 0
222
- ui.section('Markdown:') do
222
+ ui.section("Markdown:") do
223
223
  status[:markdowns].each do |current_markdown|
224
224
  ui.puts current_markdown
225
225
  end