Minicli es un marco minimalista y libre de dependencias para crear aplicaciones PHP centradas en CLI. Proporciona una forma estructurada de organizar sus comandos, así como varios asistentes para facilitar el trabajo con argumentos de comandos, obtener información de los usuarios e imprimir resultados en color.
Enlaces rápidos:
¿Qué significa estar libre de dependencia? Significa que puede crear una aplicación CLI PHP que funcione sin docenas de dependencias anidadas entre usuarios. El paquete básico minicli/minicli
solo tiene dependencias de prueba y un único requisito del sistema:
Nota: Si desea obtener información del usuario, también se requiere la extensión PHP
readline
.
Le brinda mucho espacio para elegir sus propias dependencias.
Hay dos formas de empezar. Si desea lo mínimo, lo que llamaremos "aplicación minimalista", puede crear un único script PHP con toda su aplicación. Si desea una aplicación más estructurada, con comandos y subcomandos, entonces debe usar espacios de nombres de comandos para organizar sus comandos en controladores.
Si solo desea configurar algunos comandos simples para ejecutar minicli
, todo lo que necesita hacer es crear una App
y registrar sus comandos como funciones anónimas.
composer require minicli/minicli
; esto generará un nuevo archivo composer.json
.minicli
con el siguiente contenido: #!/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 );
Luego, hazlo ejecutable y ejecuta minicli
con tu comando:
chmod +x minicli
./minicli mycommand
Para una aplicación más estructurada que utilice controladores y servicios, es mejor utilizar espacios de nombres de comandos. Nuestro repositorio de plantillas de aplicaciones es un excelente punto de partida/plantilla para configurar Minicli de esa manera.
Para crear un nuevo proyecto usando la plantilla minicli/application
, ejecute:
composer create-project --prefer-dist minicli/application myapp
Esto generará una estructura de directorio como la siguiente:
.
app
└── Command
└── Help
├── DefaultController.php
├── TableController.php
└── TestController.php
├── composer.json
├── docs
├── LICENSE
├── minicli
├── mkdocs.yml
└── README.md
Cada directorio dentro de app/Command
representa un espacio de nombres de comando. Las clases dentro app/Command/Help
representan subcomandos a los que puede acceder a través del comando help
principal.
Ahora puede ejecutar la aplicación de arranque con:
./minicli help
La documentación contiene información más detallada sobre la creación de comandos y el trabajo con resultados.
Minicli admite el uso de temas de color para cambiar el estilo de salida de la línea de comando. Actualmente hay 3 temas integrados además del tema predeterminado:
Para configurar el tema, pase una matriz de configuración con un valor theme
al inicializar la aplicación en el script. Los temas integrados necesitan un carácter inicial:
$ app = new App ([
' theme ' => ' Unicorn '
]);
Para utilizar el tema integrado predeterminado, no incluya la configuración del tema ni configúrelo en una cadena vacía.
También se pueden crear y definir temas definidos por el usuario en su proyecto. En este caso, establezca el nombre del tema, incluido su espacio de nombres, sin un inicial:
$ app = new App ([
' theme ' => ' AppThemeBlueTheme '
]);
La configuración anterior utilizaría el siguiente tema de ejemplo:
<?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 ]
];
}
}
Los temas definidos por el usuario sólo necesitan definir estilos que anularán los del tema predeterminado.
¡Las contribuciones son muy bienvenidas! Puede contribuir con código, documentación, cuestiones de archivo... Consulte nuestro documento de contribución para obtener más información sobre el proceso de contribución y lo que esperamos de usted.
Minicli utiliza Pest PHP como marco de prueba. Una vez que haya instalado todas las dependencias mediante composer install
, puede ejecutar el conjunto de pruebas con:
./vendor/bin/pest
Para obtener el informe de cobertura del código, necesitará tener instalado xdebug
. Entonces, puedes ejecutar:
./vendor/bin/pest --coverage
Y esto le brindará información detallada sobre la cobertura del código.
Los siguientes tutoriales en dev.to componen una serie llamada "Construyendo Minicli", donde creamos minicli
desde cero:
Nota: Minicli ha evolucionado mucho desde que se escribió inicialmente esa serie, pero esa fue la base de lo que Minicli es hoy.