#!/usr/bin/env php $value ? 'true' : 'false', $value === null => 'null', is_array($value) => json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) ?: '[]', default => (string) $value, }; }; $command = $argv[1] ?? null; try { switch ($command) { case 'keygen': echo Encryptor::generateKey(), "\n"; echo "Помести ключ в APP_KEY (.env)\n"; break; case 'encrypt': if (!isset($argv[2])) { throw new \RuntimeException('Укажи значение: config encrypt '); } echo Encryptor::fromEnv()->encrypt($argv[2]), "\n"; break; case 'decrypt': if (!isset($argv[2])) { throw new \RuntimeException('Укажи значение: config decrypt '); } echo Encryptor::fromEnv()->decrypt($argv[2]), "\n"; break; case 'show': $config = Config::load(); $filter = $argv[2] ?? null; $values = $config->all(); if ($filter !== null) { $values = array_filter( $values, static fn (string $key): bool => $key === $filter || str_starts_with($key, $filter . '.'), ARRAY_FILTER_USE_KEY, ); } if ($values === []) { fwrite(STDERR, "Значения не найдены\n"); exit(1); } $width = max(array_map('strlen', array_keys($values))); foreach ($values as $key => $value) { echo str_pad($key, $width), ' = ', $format($value), "\n"; } break; default: fwrite(STDERR, "Использование: config [args]\n"); fwrite(STDERR, " keygen - сгенерировать новый APP_KEY\n"); fwrite(STDERR, " encrypt - зашифровать значение\n"); fwrite(STDERR, " decrypt - расшифровать значение\n"); fwrite(STDERR, " show [key] - показать конфиг текущего APP_ENV\n"); exit(1); } exit(0); } catch (Throwable $e) { fwrite(STDERR, 'Ошибка конфигурации: ' . $e->getMessage() . "\n"); exit(1); }