Symfony 1.1 Command Line Interface (CLI)
Visão geral
Muitas das tarefas(tasks) que os desenvolvedores executam ao desenvolver/manter aplicações podem ser tratadas com a CLI (Command Line Interface) do symfony. Capítulo 16 mostra algumas dessas tarefas com detalhes, enquanto este cookbook descreve todas elas com uma breve descrição.
CLI core
O `symfony` é um script PHP que ficam no diretório root de um projeto. O comando symfony é seguido de uma tarefa, e algumas dessas tarefas precisam de parâmetros adicionais. Para chamar o script, utilize a seguinte sintaxe:
Uma tarefa pode ter também algumas opções:
Nota: O comando symfony(CLI) só funciona quando rodado dentro do diretório root do projeto
O symfony sandbox contém executáveis para Windows e *nix que permitem uma maneira mais fácil de ser chamada:
Os exemplos desse capítulo irão utilizar o executável `php`, mas você pode omitir isso no seu projeto caso ele tenha os respectivos executáveis
Para listar todas as possíveis tarefas, digite:
Para listar a versão do symfony instalada, digite:
Algumas tarefas possuem atalhos, maneira mais rápida para chamar tarefas e que dão o mesmo efeito:
Quando ocorre um erro, você pode pegar o stack trace e informações detalhadas. Para isso, adicione a opção `-t` antes do nome da tarefa para obter o trace.
CLI tasks
Cada tarefa possui uma descrição dizendo para que serve, todos os argumentos que ela recebe e todas as opções que ela aceita. Para obter essas informações você pode utilizar a tarefa `help`:
Estrutura da tarefa generate
Inicia um novo projeto
Inicia uma nova aplicação
Inicia um novo módulo
Saiba mais sobre esses comandos em Capítulo 16
Gerando os Models
Configura os dados do banco de dados tanto para `config/databases.yml` quanto para `config/propel.ini`.
Gera as classes do Propel para o model baseado no(s) arquivo(s) schema (YAML ou XML) do diretório `config/`
As configurações de conexão utilizadas por esses comandos são tiradas do arquivo `config/propel.ini`
Gera o SQL para criar as tabelas descritas no `schema.yml` no arquivo `data/schema.sql`
Cria um novo banco de dados vazio baseado nas configurações de conexão
Insere o SQL do arquivo `data/schema.sql` dentro do banco de dados
Gera os formulários baseado no model
Executa `propel:build-model`, `propel:build-sql`, `propel:build-forms`, e `propel:insert-sql` em um único comando
Saiba mais sobre esses comandos em Capítulo 8
Manipulando o Schema
Cria o `schema.yml` de um banco de dados existente. Se o parâmetro `—xml` for adicionado, as tarefas serão criadas como XML no arquivo `schema.xml`
Cria uma versão em YAML do schema em XML
Cria uma versão em XML do schema em YAML
Manipulando dados
Carrega todos os dados do diretório padrão `data/fixtures/` caso nenhum seja especificado. O environment por padrão é `dev`. O diretório precisa ser especificado com um caminho relativo ao diretório de dados, por exemplo, `fixtures` (padrão) ou `testdata` ou especificando um arquivo `fixtures/arquivo.yml`
Executa `propel:build-all` depois `propel:data-load`. Aceita os mesmos argumentos do `propel:data-load`
Faz um backup do banco de dados em um arquivo no no formato YAML dentro do diretório de fixtures
Ferramentas de desenvolvimento
Limpa as informações que estão no cache (atalho: `cc`) (saiba mais em Capítulo 12 )
Corrige as permissões dos diretórios, colocando `777` nos que precisam ser escritos. A permissão pode ser quebrada se você estiver usando uma versão do repositório SVN
Copia todas as bibliotecas necessárias para as pastas `data/`, `lib/` e `web/sf` do seu projeto. Seu projeto então passa a ser um tipo de sandbox, por exemplo: uma aplicação, sem dependências e pronta para ser transferida para produção via FTP. Isso funciona tanto para instalações com PEAR quanto para links simbólicos. Remova todas essas bibliotecas (unfreeze) com a tarefa `project:unfreeze`
Sincroniza seu projeto atual com outra máquina (geralmente seu servidor) saiba mais em Capítulo 16 )
Testes
Executa uma “unit test” que fica localizada no diretório `test/unit`. O parâmetro pode ser o mesmo de um arquivo de uma simples unidade de teste (omitinho o sufixo `Test.php`), um grupo de arquivos de unidade de teste, ou um path. Se nenhum nome for dado ao teste, todas a unidades de teste serão executadas.
Executa todos os testes de unidade no modo “harness”
Executa um teste funcional para uma aplicação específica. O parâmetro `TEST` pode ser o nome de um único arquivo de teste funcional (omitindo o sufixo `Test.php`), um grupo de arquivos de unidade de teste, ou um simples path.
Executa todos os testes funcionais de uma aplicação no modo “harness”
Executa todos os testes funcionais e de unidade no modo “harness”
Saiba mais sobre testes em Capítulo 15
Administração de projetos
Encaminha o usuário para o módulo e ação não disponivel no seu `settings.yml` e faz do mesmo jeito se voce tem ligada a configuração de não disponivel no `settings.yml`. A vantagem dessa configuração é que você pode desabilitar uma simples aplicação para um único environment e não só o projeto inteiro.
Habilita a aplicação e limpa o cache
Limpa os arquivos de log que estão no diretório de log das aplicações e environments onde o `logging.yml` especifica `purge: on` (valor padrão)
Força a rotação de arquivos de log. As opções de rotação são `—period` (o número de dias para trocar de arquivo_ e `—history` (o número de arquivos de backups que serão mantidos)
Geração de Esqueleto e Admin
Gera um novo módulo Propel CRUD baseado na classe do modelo. A versão normal copia o código do framework para um novo módulo; se você adicionar a opção `—generate-in-cache`, a tarefa cria um módulo vazio que herda do módulo da framework. Nesse caso, o código gerado é visível somente no diretório `cache/` (as ações e templates gerados herdam da framework)
Inicializa um novo módulo Propel admin baseado na classe do modelo
Saiba mais sobre esses comandos em Capítulo 14
Manipulando plugins
Instala um novo plugin. Para instalar um novo plugin vindo do wiki do symfony, o nome implicito do canal é `symfony`
Atualiza um plugin
Atualiza todos os plugins previamente instalados
Desinstala um plugin
Saiba mais sobre plugins em Capítulo 17
Preenchimento automático
A wiki do symfony contém diversas contribuições dos usuários que mostram como executar os comandos do symfony com preenchimento automático. Veja qual se encaixa no seu CLI:
Traduzido por Pedro Casado
