Viewing file: AddGitInformation.php (1.92 KB) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Spatie\FlareClient\FlareMiddleware;
use Closure; use Spatie\FlareClient\Report; use Symfony\Component\Process\Process;
class AddGitInformation { protected ?string $baseDir = null;
public function handle(Report $report, Closure $next) { $this->baseDir = $this->getGitBaseDirectory();
if (! $this->baseDir) { return $next($report); }
$report->group('git', [ 'hash' => $this->hash(), 'message' => $this->message(), 'tag' => $this->tag(), 'remote' => $this->remote(), 'isDirty' => ! $this->isClean(), ]);
return $next($report); }
protected function hash(): ?string { return $this->command("git log --pretty=format:'%H' -n 1") ?: null; }
protected function message(): ?string { return $this->command("git log --pretty=format:'%s' -n 1") ?: null; }
protected function tag(): ?string { return $this->command('git describe --tags --abbrev=0') ?: null; }
protected function remote(): ?string { return $this->command('git config --get remote.origin.url') ?: null; }
protected function isClean(): bool { return empty($this->command('git status -s')); }
protected function getGitBaseDirectory(): ?string { /** @var Process $process */ $process = Process::fromShellCommandline("echo $(git rev-parse --show-toplevel)");
$process->run();
if (! $process->isSuccessful()) { return null; }
$directory = trim($process->getOutput());
if (! file_exists($directory)) { return null; }
return $directory; }
protected function command($command) { $process = Process::fromShellCommandline($command, $this->baseDir);
$process->run();
return trim($process->getOutput()); } }
|