From 9be00a3292ddbbf280ac6d92b5b8add7f8ae9508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mindaugas=20Moz=C5=ABras?= Date: Sun, 28 Feb 2016 17:50:43 +0200 Subject: Implement ESLint runner --- lib/pronto/eslint.rb | 36 ++++++++++++++++++++++++++++++++++++ lib/pronto/eslint/version.rb | 5 +++++ 2 files changed, 41 insertions(+) create mode 100644 lib/pronto/eslint.rb create mode 100644 lib/pronto/eslint/version.rb (limited to 'lib/pronto') diff --git a/lib/pronto/eslint.rb b/lib/pronto/eslint.rb new file mode 100644 index 0000000..67e9229 --- /dev/null +++ b/lib/pronto/eslint.rb @@ -0,0 +1,36 @@ +require 'pronto' +require 'eslintrb' + +module Pronto + class ESLint < Runner + def run(patches, _) + return [] unless patches + + patches.select { |patch| patch.additions > 0 } + .select { |patch| js_file?(patch.new_file_full_path) } + .map { |patch| inspect(patch) } + .flatten.compact + end + + def inspect(patch) + options = File.exist?('.eslintrc') ? :eslintrc : :defaults + offences = Eslintrb.lint(patch.new_file_full_path, options).compact + + offences.map do |offence| + patch.added_lines.select { |line| line.new_lineno == offence['line'] } + .map { |line| new_message(offence, line) } + end + end + + def new_message(offence, line) + path = line.patch.delta.new_file[:path] + level = :warning + + Message.new(path, line, level, offence['message']) + end + + def js_file?(path) + File.extname(path) == '.js' + end + end +end diff --git a/lib/pronto/eslint/version.rb b/lib/pronto/eslint/version.rb new file mode 100644 index 0000000..d59d88a --- /dev/null +++ b/lib/pronto/eslint/version.rb @@ -0,0 +1,5 @@ +module Pronto + module ESLintVersion + VERSION = '0.5.0' + end +end -- cgit v1.2.3