Aller au contenu

phil/console-bundle

alpha

Des commandes de console Symfony plus sûres

phil/console-bundle protège les commandes qui ne doivent pas s'exécuter n'importe où, ou pas sans réfléchir. #[ForbidEnvironment('prod')] refuse une commande dans les environnements du noyau indiqués. #[ConfirmEnvironment('prod')] demande le nom de l'environnement avant l'exécution et refuse une exécution non interactive, sauf si --force-environment est fourni. Chaque commande reçoit --timestamps, qui place l'heure devant chaque ligne qu'elle écrit, et, avec Monolog, --debug-phil, qui affiche les journaux de débogage des canaux choisis. Un sommaire de la durée, de la mémoire et du code de sortie est écrit à la fin de la commande, et lint:console-guards énumère les commandes protégées. Rien n'est conservé entre deux commandes : un processus de longue durée exécute chacune à neuf.

État

PartieÉtat
#[ForbidEnvironment] et #[ConfirmEnvironment] sur les classes, __invoke() et les commandes de niveau méthodeImplémenté et testé
--force-environment pour les exécutions non interactives, code de sortie 77 en cas de refusImplémenté et testé
--timestamps en ISO 8601 ou relatif au départ, ou par configurationImplémenté et testé
--debug-phil avec les canaux MonologImplémenté et testé
Le sommaire de la durée et de la mémoireImplémenté et testé
lint:console-guards en tableau ou en JSONImplémenté et testé

Documentation

DocumentCe qu'il couvre
InstallationLes prérequis, le bundle, le mode worker.
ConfigurationChaque option, avec un exemple.
Protéger les commandesLes deux attributs, la confirmation, le code de sortie, la commande de vérification.
SortieLes horodatages, les journaux de débogage, le sommaire.
Points d'extensionL'interrupteur de débogage, la jauge de mémoire, l'horloge.
TestsLes tests du bundle et son banc d'essai.
RéférenceChaque classe du bundle.

Démarrage rapide

// config/bundles.php
Phil\ConsoleBundle\PhilConsoleBundle::class => ['all' => true],
use Phil\ConsoleBundle\Domain\Attribute\ConfirmEnvironment;
use Phil\ConsoleBundle\Domain\Attribute\ForbidEnvironment;
use Symfony\Component\Console\Attribute\AsCommand;

#[AsCommand('app:database:reset')]
#[ForbidEnvironment('prod', 'staging')]
final class ResetDatabase
{
    public function __invoke(): int
}

#[AsCommand('app:customers:anonymize')]
final class AnonymizeCustomers
{
    #[ConfirmEnvironment('prod')]
    public function __invoke(): int
}
bin/console app:customers:anonymize --timestamps=relative --debug-phil=doctrine -v
bin/console app:customers:anonymize --no-interaction --force-environment
bin/console lint:console-guards

Prérequis

PHP 8.5 ou plus récent et Symfony 8.2 ou plus récent ; Monolog pour --debug-phil.

Contribuer

Les contributions sont les bienvenues sur le monodépôt PHIL : lisez le guide de contribution et le code de conduite. Signalez une vulnérabilité en privé, comme l'explique la politique de sécurité, jamais dans un ticket public.

Licence

MIT, © Philippe Gamache, doing business as Le Gnome Archiviste; a Parler Haut Interagir Librement project. Voir LICENSE.