Class: PreCommit::Checks::Perlcritic

Inherits:
Plugin
  • Object
show all
Defined in:
lib/plugins/pre_commit/checks/perlcritic.rb

Constant Summary collapse

FILENAME_WHITELIST_REGEXP =
/\.(pm|pl|t)\Z/

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.descriptionObject



24
25
26
# File 'lib/plugins/pre_commit/checks/perlcritic.rb', line 24

def self.description
  "Asks Perl::Critic to critique your code"
end

Instance Method Details

#alternate_config_fileObject



40
41
42
# File 'lib/plugins/pre_commit/checks/perlcritic.rb', line 40

def alternate_config_file
  '.perlcriticrc'
end

#call(staged_files) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/plugins/pre_commit/checks/perlcritic.rb', line 11

def call(staged_files)
  staged_files = staged_files.grep(FILENAME_WHITELIST_REGEXP)
  return if staged_files.empty?

  args = [] + config_file_flag + user_supplied_flags + staged_files

  stdout, stderr, status = Open3.capture3('/usr/bin/env', perlcritic_bin, *args)

  return 'foo' if status.success?

  return stdout
end

#config_file_flagObject



28
29
30
# File 'lib/plugins/pre_commit/checks/perlcritic.rb', line 28

def config_file_flag
  config_file ? ['-profile', config_file] : []
end

#perlcritic_binObject



32
33
34
# File 'lib/plugins/pre_commit/checks/perlcritic.rb', line 32

def perlcritic_bin
  config.get('perlcritic.bin') || 'perlcritic'
end

#user_supplied_flagsObject



36
37
38
# File 'lib/plugins/pre_commit/checks/perlcritic.rb', line 36

def user_supplied_flags
  Array(config.get('perlcritic.flags')).reject(&:empty?)
end