php/src/Core/Config/Console/ConfigPrimeCommand.php
Snider 28d004ff61
Some checks failed
CI / PHP 8.4 (push) Failing after 1m54s
CI / PHP 8.3 (push) Failing after 1m58s
feat: replace Go CLI with PHP framework
Go CLI commands moved to core/go-php. This repo now contains
the Laravel modular monolith framework (previously php-framework).

- Remove all Go files (now in core/go-php)
- Add PHP framework: event-driven module loading, lifecycle events
- Composer package: core/php
- core/php-framework remains as-is for backward compat

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 08:49:51 +00:00

79 lines
2.3 KiB
PHP

<?php
/*
* Core PHP Framework
*
* Licensed under the European Union Public Licence (EUPL) v1.2.
* See LICENSE file for details.
*/
declare(strict_types=1);
namespace Core\Config\Console;
use Core\Config\ConfigService;
use Illuminate\Console\Command;
class ConfigPrimeCommand extends Command
{
protected $signature = 'config:prime
{workspace? : Workspace slug to prime (omit for all)}
{--system : Prime system config only}';
protected $description = 'Prime the config cache (compute resolution, store in cache)';
public function handle(ConfigService $config): int
{
$workspaceSlug = $this->argument('workspace');
$systemOnly = $this->option('system');
if ($systemOnly) {
$this->info('Priming system config cache...');
$config->prime(null);
$this->info('System config cached.');
return self::SUCCESS;
}
if ($workspaceSlug) {
if (! class_exists(\Core\Tenant\Models\Workspace::class)) {
$this->error('Tenant module not installed. Cannot prime workspace config.');
return self::FAILURE;
}
$workspace = \Core\Tenant\Models\Workspace::where('slug', $workspaceSlug)->first();
if (! $workspace) {
$this->error("Workspace not found: {$workspaceSlug}");
return self::FAILURE;
}
$this->info("Priming config cache for workspace: {$workspace->slug}");
$config->prime($workspace);
$this->info('Workspace config cached.');
return self::SUCCESS;
}
$this->info('Priming config cache for all workspaces...');
if (! class_exists(\Core\Tenant\Models\Workspace::class)) {
$this->warn('Tenant module not installed. Only priming system config.');
$config->prime(null);
$this->info('System config cached.');
return self::SUCCESS;
}
$this->withProgressBar(\Core\Tenant\Models\Workspace::all(), function ($workspace) use ($config) {
$config->prime($workspace);
});
$this->newLine();
$this->info('All config caches primed.');
return self::SUCCESS;
}
}