Files
panel-pelican-dev/app/Console/Commands/InfoCommand.php

78 lines
2.8 KiB
PHP
Raw Normal View History

2017-09-16 19:47:14 -05:00
<?php
2024-03-12 22:39:16 -04:00
namespace App\Console\Commands;
2017-09-16 19:47:14 -05:00
use Illuminate\Console\Command;
2024-03-12 22:39:16 -04:00
use App\Services\Helpers\SoftwareVersionService;
2017-09-16 19:47:14 -05:00
class InfoCommand extends Command
{
2017-09-21 01:16:01 -04:00
protected $description = 'Displays the application, database, and email configurations along with the panel version.';
2017-09-16 19:47:14 -05:00
protected $signature = 'p:info';
/**
* VersionCommand constructor.
*/
2024-03-19 04:59:19 -04:00
public function __construct(private SoftwareVersionService $versionService)
2017-09-16 19:47:14 -05:00
{
parent::__construct();
}
/**
* Handle execution of command.
*/
2024-03-19 21:12:27 -04:00
public function handle(): void
2017-09-16 19:47:14 -05:00
{
$this->output->title('Version Information');
$this->table([], [
2024-03-19 04:59:19 -04:00
['Panel Version', config('app.version')],
2017-09-16 19:47:14 -05:00
['Latest Version', $this->versionService->getPanel()],
['Up-to-Date', $this->versionService->isLatestPanel() ? 'Yes' : $this->formatText('No', 'bg=red')],
], 'compact');
$this->output->title('Application Configuration');
$this->table([], [
2024-03-19 04:59:19 -04:00
['Environment', $this->formatText(config('app.env'), config('app.env') === 'production' ?: 'bg=red')],
['Debug Mode', $this->formatText(config('app.debug') ? 'Yes' : 'No', !config('app.debug') ?: 'bg=red')],
['Installation URL', config('app.url')],
2017-09-16 19:47:14 -05:00
['Installation Directory', base_path()],
2024-03-19 04:59:19 -04:00
['Cache Driver', config('cache.default')],
['Queue Driver', config('queue.default')],
['Session Driver', config('session.driver')],
['Filesystem Driver', config('filesystems.default')],
['Default Theme', config('themes.active')],
2017-09-16 19:47:14 -05:00
], 'compact');
$this->output->title('Database Configuration');
2024-03-19 04:59:19 -04:00
$driver = config('database.default');
2017-09-16 19:47:14 -05:00
$this->table([], [
['Driver', $driver],
2024-03-19 04:59:19 -04:00
['Host', config("database.connections.$driver.host")],
['Port', config("database.connections.$driver.port")],
['Database', config("database.connections.$driver.database")],
['Username', config("database.connections.$driver.username")],
2017-09-16 19:47:14 -05:00
], 'compact');
2022-10-23 20:51:20 -04:00
// TODO: Update this to handle other mail drivers
2017-09-16 19:47:14 -05:00
$this->output->title('Email Configuration');
$this->table([], [
2024-03-19 04:59:19 -04:00
['Driver', config('mail.default')],
['Host', config('mail.mailers.smtp.host')],
['Port', config('mail.mailers.smtp.port')],
['Username', config('mail.mailers.smtp.username')],
['From Address', config('mail.from.address')],
['From Name', config('mail.from.name')],
['Encryption', config('mail.mailers.smtp.encryption')],
2017-09-16 19:47:14 -05:00
], 'compact');
}
/**
* Format output in a Name: Value manner.
*/
private function formatText(string $value, string $opts = ''): string
2017-09-16 19:47:14 -05:00
{
return sprintf('<%s>%s</>', $opts, $value);
}
}