Class: PreCommit::PhpCheck

Inherits:
Object
  • Object
show all
Defined in:
lib/pre-commit/checks/php_check.rb

Class Method Summary collapse

Class Method Details

.call(staged_files) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/pre-commit/checks/php_check.rb', line 5

def self.call(staged_files)
  staged_files = staged_files.grep /\.(php|engine|theme|install|inc|module|test)$/
  return if staged_files.empty?

  errors = staged_files.map { |file| run_check(file) }.compact
  return if errors.empty?

  errors.join("\n")
end

.run_check(file) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/pre-commit/checks/php_check.rb', line 15

def self.run_check(file)
  # We force PHP to display errors otherwise they will likely end up in the
  # error_log and not in stdout.
  result = `php -d display_errors=1 -l #{file}`
  # Filter out the obvious note from PHP.
  result = result.split($/).find_all {|line| line !~ /Errors/}.join($/)
  # If PHP exited non-zero then there was a parse error.
  result.strip unless $? == 0
end