forked from sds/overcommit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
credo.rb
27 lines (22 loc) · 717 Bytes
/
credo.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# frozen_string_literal: true
module Overcommit::Hook::PreCommit
# Runs `credo` against any modified ex files.
#
# @see https://github.com/rrrene/credo
class Credo < Base
# example message:
# lib/file1.ex:1:11: R: Modules should have a @moduledoc tag.
# lib/file2.ex:12:81: R: Line is too long (max is 80, was 81).
def run
result = execute(command, args: applicable_files)
return :pass if result.success?
result.stdout.split("\n").map(&:strip).reject(&:empty?).
map { |error| message(error) }
end
private
def message(error)
file, line = error.split(':')
Overcommit::Hook::Message.new(:error, file, Integer(line), error)
end
end
end