Ferramentas para tornar o trabalho com o Symfony Console ainda mais incrível.
Este pacote está disponível no Packagist:
composer require efrane/console-additions
Batch
Esta classe oferece comandos em lote de um aplicativo de console Symfony. Isso pode ser útil ao escrever coisas como scripts de implantação ou atualização como comandos de console que chamam muitos outros comandos em uma ordem definida, por exemplo, atualização de cache, migrações de banco de dados, etc.
Uso em um Command::execute
:
EFrane ConsoleAdditions Command Batch:: create ( $ this -> getApplication (), $ output )
-> add ( ' my:command --with-option ' )
-> add ( ' my:other:command for-this-input ' )
-> run ();
Comandos de shell
Os lotes podem ser um conjunto interligado de aplicativos de console e comandos de shell do sistema. Este é um recurso avançado que requer o pacote symfony/process
como dependência adicional.
Como os comandos shell criam objetos Process
internamente, a API Batch
expõe métodos para adicionar um comando shell:
addShell
adiciona o processo com a configuração fornecida (veja Batch::addShell para detalhes)addShellCb(string $cmd, callable $cb)
cria o processo e o passa para um retorno de chamada para configuração adicional. Isto é especialmente útil quando o comando desejado requer algum tipo de tubulação de processo.Silenciando Erros
É possível executar um lote de comandos sem gerar exceções.
Este pacote oferece interfaces de saída de console adicionais:
FileOutput
FileOutputs gravam todos os seus dados em um fluxo de arquivos e chegam em sabores concretos:
NativeFileOutput
usa as funções nativas de streaming de arquivos PHP, sendo assim uma boa opção para destinos locais e dependendo da configuração dos protocolos de streaming PHP de seus servidores pode até ser suficiente para destinos remotos.
FlysystemFileOutput
por outro lado, passa os dados de fluxo para um adaptador league/flysystem
, sendo assim capaz de enviar esses dados para qualquer destino suportado pelo Flysystem, ou seja, S3, Dropbox, FTP, etc.
MultiplexedOutput
MultiplexedOutput pode ser usado para combinar várias interfaces de saída para agir como uma só. Este é o companheiro lógico das saídas de arquivo, já que normalmente alguém desejaria enviar a saída para o console do usuário e algum outro destino. Uma configuração simples interna pode ser assim:
class Command extends Symfony Component Console Command {
public function execute ( InputInterface $ input , OutputInterface $ output ) {
// send output to multiple destinations
$ output = new EFrane ConsoleAdditions Output MultiplexedOutput ([
$ output ,
new EFrane ConsoleAdditions Output NativeFileOutput ( ' command.log ' )
]);
// normal console command
}
}