Skip to content

Commit 1f022ef

Browse files
authored
Laravel Pennant Collector (#1655)
* Add a Laravel Pennant collector to display state of feature flags defined via Laravel Pennant * Change widget
1 parent 6b6c9bd commit 1f022ef

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

config/debugbar.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@
183183
'models' => true, // Display models
184184
'livewire' => true, // Display Livewire (when available)
185185
'jobs' => false, // Display dispatched jobs
186+
'pennant' => false, // Display Pennant feature flags
186187
],
187188

188189
/*
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
namespace Barryvdh\Debugbar\DataCollector;
4+
5+
use DebugBar\DataCollector\DataCollector;
6+
use DebugBar\DataCollector\DataCollectorInterface;
7+
use DebugBar\DataCollector\Renderable;
8+
use Illuminate\Support\Facades\Config;
9+
10+
class PennantCollector extends DataCollector implements DataCollectorInterface, Renderable
11+
{
12+
/** @var \Laravel\Pennant\FeatureManager */
13+
protected $manager;
14+
15+
/**
16+
* Create a new SessionCollector
17+
*
18+
* @param \Laravel\Pennant\FeatureManager $manager
19+
*/
20+
public function __construct($manager)
21+
{
22+
$this->manager = $manager;
23+
}
24+
25+
/**
26+
* {@inheritdoc}
27+
*/
28+
public function collect()
29+
{
30+
$store = $this->manager->store(Config::get('pennant.default'));
31+
32+
return $store->values($store->stored());
33+
}
34+
35+
/**
36+
* {@inheritDoc}
37+
*/
38+
public function getName()
39+
{
40+
return 'pennant';
41+
}
42+
43+
/**
44+
* {@inheritDoc}
45+
*/
46+
public function getWidgets()
47+
{
48+
return [
49+
"pennant" => [
50+
"icon" => "flag",
51+
"widget" => "PhpDebugBar.Widgets.VariableListWidget",
52+
"map" => "pennant",
53+
"default" => "{}"
54+
]
55+
];
56+
}
57+
}

src/LaravelDebugbar.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Barryvdh\Debugbar\DataCollector\LivewireCollector;
1111
use Barryvdh\Debugbar\DataCollector\LogsCollector;
1212
use Barryvdh\Debugbar\DataCollector\MultiAuthCollector;
13+
use Barryvdh\Debugbar\DataCollector\PennantCollector;
1314
use Barryvdh\Debugbar\DataCollector\QueryCollector;
1415
use Barryvdh\Debugbar\DataCollector\SessionCollector;
1516
use Barryvdh\Debugbar\DataCollector\RequestCollector;
@@ -530,6 +531,17 @@ public function __toString(): string
530531
}
531532
}
532533

534+
if ($this->shouldCollect('pennant', false)) {
535+
if (class_exists('Laravel\Pennant\FeatureManager') && $app->bound(\Laravel\Pennant\FeatureManager::class)) {
536+
$featureManager = $app->make(\Laravel\Pennant\FeatureManager::class);
537+
try {
538+
$this->addCollector(new PennantCollector($featureManager));
539+
} catch (Exception $e) {
540+
$this->addCollectorException('Cannot add PennantCollector', $e);
541+
}
542+
}
543+
}
544+
533545
$renderer = $this->getJavascriptRenderer();
534546
$renderer->setIncludeVendors($config->get('debugbar.include_vendors', true));
535547
$renderer->setBindAjaxHandlerToFetch($config->get('debugbar.capture_ajax', true));

0 commit comments

Comments
 (0)