diff --git a/src/Monolog/Processor/GitProcessor.php b/src/Monolog/Processor/GitProcessor.php new file mode 100644 index 00000000..220a5669 --- /dev/null +++ b/src/Monolog/Processor/GitProcessor.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +/** + * Injects Git branch and Git commit SHA in all records + * + * @author Nick Otter + */ +class GitProcessor +{ + /** + * @param array $record + * @return array + */ + public function __invoke(array $record) + { + + $branch = self::getBranch(); + $commit = self::getCommit(); + + $record['extra'] = array_merge( + $record['extra'], + array( + 'git' => array( + 'branch' => $branch, + 'commit' => $commit + ), + ) + ); + + return $record; + } + + static protected function getBranch() { + $branches = explode("\n", `git branch`); + + foreach ($branches as $branch) { + if ($branch[0] == "*") { + return substr($branch, 2); + } + } + return $branches; + } + + static protected function getCommit() { + $s = `git rev-parse HEAD`; + return $s; + } +} diff --git a/tests/Monolog/Processor/GitProcessorTest.php b/tests/Monolog/Processor/GitProcessorTest.php new file mode 100644 index 00000000..5f7a3e24 --- /dev/null +++ b/tests/Monolog/Processor/GitProcessorTest.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Processor; + +use Monolog\TestCase; + +class GitProcessorTest extends TestCase +{ + /** + * @covers Monolog\Processor\GitProcessor::__invoke + */ + public function testProcessor() + { + $processor = new GitProcessor(); + $record = $processor($this->getRecord()); + + $this->assertArrayHasKey('git', $record['extra']); + + $this->assertTrue(!is_array($record['extra']['git']['branch'])); + + } +}