| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugins\FeatureFlags\Commands; |
|
|
| use Piwik\Container\StaticContainer; |
| use Piwik\Plugin\ConsoleCommand; |
| use Piwik\Plugins\FeatureFlags\Commands\FeatureFlagFinder\FeatureFlagFinder; |
| use Piwik\Plugins\FeatureFlags\FeatureFlagManager; |
| use Piwik\Plugins\FeatureFlags\ForcedFeatureFlagStateInterface; |
|
|
| class ListFeatureFlags extends ConsoleCommand |
| { |
| protected function configure() |
| { |
| $this->setName('featureflags:list'); |
| $this->setDescription('List all available feature flags and their current state'); |
| } |
|
|
| protected function doExecute(): int |
| { |
| $featureFlagManager = StaticContainer::get(FeatureFlagManager::class); |
|
|
| $rows = []; |
| foreach (FeatureFlagFinder::findAll() as $featureFlag) { |
| $state = $featureFlagManager->isFeatureActive(get_class($featureFlag)) ? 'enabled' : 'disabled'; |
|
|
| if ($featureFlag instanceof ForcedFeatureFlagStateInterface) { |
| $state .= ' (forced)'; |
| } |
|
|
| $rows[] = [$featureFlag->getName(), get_class($featureFlag), $state]; |
| } |
|
|
| if (empty($rows)) { |
| $this->getOutput()->writeln('No feature flags found.'); |
| return self::SUCCESS; |
| } |
|
|
| usort($rows, static function (array $a, array $b): int { |
| return strcmp($a[0], $b[0]); |
| }); |
|
|
| $this->renderTable(['Name', 'Class', 'State'], $rows); |
|
|
| return self::SUCCESS; |
| } |
| } |
|
|