From 9c579677004b325055161c886e7797aec0cd1e85 Mon Sep 17 00:00:00 2001 From: otternq Date: Sat, 16 Nov 2013 17:40:16 -0800 Subject: [PATCH] adding a processor for basic git information Adds the current Git Branch, and Git Commit key to the extra field --- src/Monolog/Processor/GitProcessor.php | 59 ++++++++++++++++++++ tests/Monolog/Processor/GitProcessorTest.php | 31 ++++++++++ 2 files changed, 90 insertions(+) create mode 100644 src/Monolog/Processor/GitProcessor.php create mode 100644 tests/Monolog/Processor/GitProcessorTest.php 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'])); + + } +}