From 75b03dab844853b645b1acaa3a65067735974874 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Tue, 24 Jul 2018 11:31:57 -0400 Subject: [PATCH] fixes dangerfile (#6158) --- Dangerfile | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/Dangerfile b/Dangerfile index a3934b51a7d..3145f1a8650 100644 --- a/Dangerfile +++ b/Dangerfile @@ -1,29 +1,38 @@ require 'json' +require 'shellwords' if git.lines_of_code > 500 - warn("This PR seems big, we prefer smaller PR. Please be sure this is needed and can’t be split in smaller commits.") + warn("This PR seems big, we prefer smaller PR. Please be sure this is needed and can't be split in smaller PRs.") end -rubocop_output = `bundle exec rubocop --parallel` +to_lint = git.modified_files + git.added_files +files_to_lint = Shellwords.join(to_lint) + +rubocop_output = `bundle exec rubocop -f json --parallel #{files_to_lint}` if !rubocop_output.empty? offenses = JSON.parse(rubocop_output)['files'] .select { |f| f['offenses'].any? } - fail(%{ - This PR has multiple rubocop offenses: + def format_offense(offense) + output = "file: #{offense['path']}\n" + offense['offenses'].each do |o| + output << "#{o['message']} (line:#{o['location']['start_line']}, col:#{o['location']['start_column']})\n" + end + output << "\n" + end - #{offenses.join("\n")} - }) + if !offenses.empty? + fail(%{ + This PR has multiple rubocop offenses:\n + #{offenses.map { |o| format_offense(o) }.join('\n') } + }) + end end -prettier_output = `prettier --list-different "app/assets/stylesheets/**/*.scss" "app/assets/javascripts/**/*.es6" "test/javascripts/**/*.es6" "plugins/**/*.scss" "plugins/**/*.es6"` -if !prettier_output.empty? - offenses = JSON.parse(prettier_output)['files'] - .select { |f| f['offenses'].any? } - +prettier_offenses = `prettier --list-different #{files_to_lint}`.split('\n') +if !prettier_offenses.empty? fail(%{ - This PR has multiple prettier offenses: - - #{offenses.join("\n")} + This PR has multiple prettier offenses (we recommend configuring prettier linting in your editor):\n + #{prettier_offenses.join("\n")} }) end