Minicli est un framework minimaliste et sans dépendance pour créer des applications PHP centrées sur CLI. Il fournit une manière structurée d'organiser vos commandes, ainsi que diverses aides pour faciliter le travail avec les arguments de commande, l'obtention des commentaires des utilisateurs et l'impression de sorties en couleur.
Liens rapides :
Que signifie être libre de toute dépendance ? Cela signifie que vous pouvez créer une application CLI PHP fonctionnelle sans des dizaines de dépendances utilisateur imbriquées. Le package minicli/minicli
de base n'a que des dépendances de test et une seule configuration système requise :
Remarque : Si vous souhaitez obtenir la contribution de l'utilisateur, l'extension PHP
readline
est également requise.
Cela vous donne beaucoup de liberté pour choisir vos propres dépendances.
Il existe deux façons de commencer. Si vous voulez le strict minimum, ce que nous appellerons « Application minimaliste », vous pouvez créer un seul script PHP avec l'ensemble de votre application. Si vous souhaitez une application plus structurée, avec des commandes et des sous-commandes, vous devez utiliser les espaces de noms de commande pour organiser vos commandes en contrôleurs.
Si vous souhaitez simplement configurer quelques commandes simples à exécuter via minicli
, tout ce que vous avez à faire est de créer une App
et d'enregistrer vos commandes en tant que fonctions anonymes.
composer require minicli/minicli
- cela générera un nouveau fichier composer.json
.minicli
avec le contenu suivant : #!/usr/bin/env php
<?php
if ( php_sapi_name () !== ' cli ' ) {
exit ;
}
require __DIR__ . ' /vendor/autoload.php ' ;
use Minicli App ;
use Minicli Command CommandCall ;
$ app = new App ();
$ app -> setSignature ( ' ./minicli mycommand ' );
$ app -> registerCommand ( ' mycommand ' , function ( CommandCall $ input ) {
echo " My Command! " ;
var_dump ( $ input );
});
$ app -> runCommand ( $ argv );
Ensuite, rendez-le exécutable et exécutez minicli
avec votre commande :
chmod +x minicli
./minicli mycommand
Pour une application plus structurée utilisant des contrôleurs et des services, il est préférable d'utiliser des espaces de noms de commande. Notre référentiel de modèles d'application est un excellent point de départ/modèle pour configurer Minicli de cette façon.
Pour créer un nouveau projet à l'aide du modèle minicli/application
, exécutez :
composer create-project --prefer-dist minicli/application myapp
Cela générera une structure de répertoires comme la suivante :
.
app
└── Command
└── Help
├── DefaultController.php
├── TableController.php
└── TestController.php
├── composer.json
├── docs
├── LICENSE
├── minicli
├── mkdocs.yml
└── README.md
Chaque répertoire dans app/Command
représente un espace de noms de commande. Les classes dans app/Command/Help
représentent des sous-commandes auxquelles vous pouvez accéder via la commande help
principale.
Vous pouvez maintenant exécuter l'application bootstrapée avec :
./minicli help
La documentation contient des informations plus détaillées sur la création de commandes et l'utilisation des sorties.
Minicli prend en charge l'utilisation de thèmes de couleurs pour modifier le style de sortie de la ligne de commande. Il existe actuellement 3 thèmes intégrés autres que le thème par défaut :
Pour définir le thème, transmettez un tableau de configuration avec une valeur theme
lors de l'initialisation de l'application dans le script. Les thèmes intégrés nécessitent un caractère :
$ app = new App ([
' theme ' => ' Unicorn '
]);
Pour utiliser le thème intégré par défaut, n'incluez pas le paramètre de configuration du thème ou définissez-le sur une chaîne vide.
Des thèmes définis par l'utilisateur peuvent également être créés et définis dans votre projet. Dans ce cas, définissez le nom du thème, y compris son espace de noms, sans :
$ app = new App ([
' theme ' => ' AppThemeBlueTheme '
]);
Le paramètre ci-dessus utiliserait l'exemple de thème suivant :
<?php
// File : app / Theme / BlueTheme . php
namespace App Theme ;
use Minicli Output Theme DefaultTheme ;
use Minicli Output CLIColors ;
class BlueTheme extends DefaultTheme
{
public function getThemeColors (): array
{
return [
' default ' => [ CLIColors:: $ FG_BLUE ],
' alt ' => [ CLIColors:: $ FG_BLACK , CLIColors:: $ BG_BLUE ],
' info ' => [ CLIColors:: $ FG_WHITE ],
' info_alt ' => [ CLIColors:: $ FG_WHITE , CLIColors:: $ BG_BLUE ]
];
}
}
Les thèmes définis par l'utilisateur doivent uniquement définir des styles qui remplaceront ceux du thème par défaut.
Les contributions sont les bienvenues ! Vous pouvez contribuer avec du code, de la documentation, des problèmes de classement... Veuillez vous référer à notre document de contribution pour plus d'informations sur le processus de contribution et ce que nous attendons de vous.
Minicli utilise Pest PHP comme framework de test. Une fois que toutes les dépendances sont installées via composer install
, vous pouvez exécuter la suite de tests avec :
./vendor/bin/pest
Pour obtenir le rapport de couverture de code, vous devez avoir installé xdebug
. Ensuite, vous pouvez exécuter :
./vendor/bin/pest --coverage
Et cela vous donnera des informations détaillées sur la couverture du code.
Les tutoriels suivants sur dev.to composent une série nommée "Building Minicli", où nous créons minicli
à partir de zéro :
Remarque : Minicli a beaucoup évolué depuis l'écriture initiale de cette série, mais c'est la base de ce qu'est Minicli aujourd'hui.