Minicli é uma estrutura minimalista e livre de dependências para a construção de aplicativos PHP centrados em CLI. Ele fornece uma maneira estruturada de organizar seus comandos, bem como vários auxiliares para facilitar o trabalho com argumentos de comando, obtenção de informações dos usuários e impressão de resultados coloridos.
Links rápidos:
O que significa ser livre de dependência? Isso significa que você pode construir um aplicativo CLI PHP funcional sem dezenas de dependências aninhadas de usuário. O pacote básico minicli/minicli
possui apenas dependências de teste e um único requisito de sistema:
Nota: Se você deseja obter a entrada do usuário, a extensão PHP
readline
também é necessária.
Dá a você muito espaço para escolher suas próprias dependências.
Existem duas maneiras de começar. Se você quiser o mínimo, o que chamaremos de "Aplicativo Minimalista", você pode criar um único script PHP com todo o seu aplicativo. Se você deseja uma aplicação mais estruturada, com comandos e subcomandos, então você deve usar Command Namespaces para organizar seus comandos em Controllers.
Se você deseja apenas configurar alguns comandos simples para serem executados no minicli
, tudo o que você precisa fazer é criar um App
e registrar seus comandos como funções anônimas.
composer require minicli/minicli
- isso irá gerar um novo arquivo composer.json
.minicli
com o seguinte conteúdo: #!/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 );
Em seguida, torne-o executável e execute minicli
com seu comando:
chmod +x minicli
./minicli mycommand
Para uma aplicação mais estruturada usando Controladores e Serviços, é melhor usar Namespaces de Comando. Nosso repositório de modelos de aplicativos é um excelente ponto de partida/modelo para configurar o Minicli dessa forma.
Para criar um novo projeto usando o modelo minicli/application
, execute:
composer create-project --prefer-dist minicli/application myapp
Isso irá gerar uma estrutura de diretórios como a seguinte:
.
app
└── Command
└── Help
├── DefaultController.php
├── TableController.php
└── TestController.php
├── composer.json
├── docs
├── LICENSE
├── minicli
├── mkdocs.yml
└── README.md
Cada diretório dentro de app/Command
representa um Namespace de Comando. As classes dentro de app/Command/Help
representam subcomandos que você pode acessar através do comando help
principal.
Agora você pode executar o aplicativo inicializado com:
./minicli help
A documentação contém informações mais detalhadas sobre como criar comandos e trabalhar com saída.
Minicli suporta o uso de temas de cores para alterar o estilo da saída da linha de comando. Atualmente existem três temas integrados além do tema padrão:
Para definir o tema, passe uma matriz de configuração com um valor theme
ao inicializar App no script. Os temas integrados precisam de um caractere inicial:
$ app = new App ([
' theme ' => ' Unicorn '
]);
Para usar o tema integrado padrão, não inclua a configuração do tema ou defina-a como uma string vazia.
Temas definidos pelo usuário também podem ser criados e definidos em seu projeto. Nesse caso, defina o nome do tema incluindo seu namespace sem o inicial:
$ app = new App ([
' theme ' => ' AppThemeBlueTheme '
]);
A configuração acima usaria o seguinte tema de exemplo:
<?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 ]
];
}
}
Os temas definidos pelo usuário só precisam definir estilos que substituirão os do tema padrão.
Contribuições são muito bem-vindas! Você pode contribuir com código, documentação, questões de arquivamento... Consulte nosso documento de contribuição para obter mais informações sobre o processo de contribuição e o que esperamos de você.
Minicli usa Pest PHP como estrutura de teste. Depois de instalar todas as dependências via composer install
, você pode executar o conjunto de testes com:
./vendor/bin/pest
Para obter o relatório de cobertura de código, você precisará ter xdebug
instalado. Então, você pode executar:
./vendor/bin/pest --coverage
E isso lhe dará informações detalhadas sobre a cobertura do código.
Os seguintes tutoriais no dev.para compor uma série chamada "Construindo Minicli", onde criamos minicli
do zero:
Nota: Minicli evoluiu muito desde que a série foi escrita inicialmente, mas essa foi a base para o que Minicli é hoje.