Bläddra i källkod

adding a processor for basic git information

Adds the current Git Branch, and Git Commit key to the extra field
otternq 12 år sedan
förälder
incheckning
9c57967700
2 ändrade filer med 90 tillägg och 0 borttagningar
  1. 59 0
      src/Monolog/Processor/GitProcessor.php
  2. 31 0
      tests/Monolog/Processor/GitProcessorTest.php

+ 59 - 0
src/Monolog/Processor/GitProcessor.php

@@ -0,0 +1,59 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * 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;
+    }
+}

+ 31 - 0
tests/Monolog/Processor/GitProcessorTest.php

@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * 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']));
+        
+    }
+}