Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/php
- <?php
- $params = explode(' ', file_get_contents('php://stdin'));
- $ref = trim($params[1]);
- $diff = array();
- $return = 0;
- exec("git diff --name-only $params[0] $params[1] 2> /dev/null", $diff, $return);
- if ($return > 0) {
- echo "Could not run git diff\n\n";
- exit(1);
- }
- $filename_pattern = '/\.php$/';
- foreach ($diff as $file) {
- if (!preg_match($filename_pattern, $file)) {
- continue;
- }
- $tree = array();
- $return = 0;
- exec("git ls-tree $ref $file 2> /dev/null", $tree, $return);
- if ($return > 0 || empty($tree)) {
- echo "Deleted file '$file'! skipping test...\n\n";
- continue;
- }
- echo "\nRunning php linter on '$file'...\n";
- $tree = preg_split('/\s/', $tree[0]);
- $fileContents = array();
- exec("git cat-file $tree[1] $tree[2] 2> /dev/null", $fileContents, $return);
- if ($return > 0) {
- echo "Could not run git cat-file\n\n";
- exit(1);
- }
- $fileContents = implode("\n", $fileContents);
- $pipes = array();
- $proc = proc_open('php -l',
- array(0 => array('pipe', 'r'),
- 1 => array('pipe', 'w')),
- $pipes);
- if (!is_resource($proc)) {
- echo "Could not creater php linter process\n\n";
- exit(1);
- }
- fwrite($pipes[0], $fileContents);
- fclose($pipes[0]);
- fclose($pipes[1]);
- $resultCode = proc_close($proc);
- if ($resultCode != 0) {
- echo "Error parsing file '$file'\n\n";
- exit($resultCode);
- }
- print "'$file' PASSED linter test..\n\n";
- print "Running code standard test on '$file'...\n\n";
- // also check coding standard
- $pipes = array();
- $proc = proc_open('phpcs --standard=drupalcs',
- array(0 => array('pipe', 'r'),
- 1 => array('pipe', 'w')),
- $pipes);
- if (!is_resource($proc)) {
- echo "Could not creater phpcs process\n\n";
- exit(1);
- }
- fwrite($pipes[0], $fileContents);
- fclose($pipes[0]);
- echo stream_get_contents($pipes[1]);
- fclose($pipes[1]);
- $resultCode = proc_close($proc);
- if ($resultCode != 0) {
- echo "File '$file' does not follow drupal code standard\n\n";
- exit($resultCode);
- }
- print "'$file' PASSED code standard test...\n\n";
- }
- echo "No errors detected\n\n";
- exit(0);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement