Check your version

This video covers a topic in Drupal 7 which may or may not be the version you're using. We're keeping this tutorial online as a courtesy to users of Drupal 7, but we consider it archived.

Overview of the Coding for Drush Series

Video loading...

  • 0:00
    [Drupalize.me] [Learn Drupal]
  • 0:04
    [♫ Music playing ♫]
  • 0:06
    [Overview of the Coding for Drush Series] [Coding for Drush, Chapter 1 with Joe Shindelar]
  • 0:13
    Drush, or the Drupal Shell, is a powerful command-line application
  • 0:16
    that makes it really easy for Drupal developers
  • 0:18
    to interact with a full Drupal environment from their command line
  • 0:23
    and do things like write scripts to help automate certain workflows,
  • 0:26
    install modules, automate deployment.
  • 0:29
    All kinds of different things that we want to do with Drupal,
  • 0:31
    but don't necessarily want a user interface to do it.
  • 0:34
    In this series, we're going to look at how you can extend
  • 0:37
    Drush's functionality by writing your own Drush commands.
  • 0:40
    We'll start by talking about what a command is,
  • 0:43
    what arguments for a command are, and what options for a command are,
  • 0:46
    and how arguments and options differ from one another.
  • 0:49
    Throughout the course of this series, we're going to work on writing a command
  • 0:53
    that extends the functionality of our Databasics Module.
  • 0:56
    We want a command that a user can run that will generate
  • 0:59
    a bunch of random content and stick it into the databasics table
  • 1:02
    so that we can have some dummy data for testing.
  • 1:06
    In order to do that, we're going to start
  • 1:08
    by creating a special command file in the Databasics Module.
  • 1:13
    These are specially named files that Drush will find
  • 1:15
    and, in which, they'll look for an implementation of hook_drush_command.
  • 1:19
    We'll use hook_drush_command in order to tell Drush things like the name of our command,
  • 1:23
    a description for the command. We're also going to use it to tell Drush
  • 1:26
    about the arguments that someone could provide for the command.
  • 1:29
    In addition to that, we can use hook_drush_command
  • 1:32
    in order to tell Drush about the arguments that our command provides.
  • 1:36
    In our case, our command is going to take an argument
  • 1:39
    for the number of records that it should generate.
  • 1:42
    We'll also talk about specifying options for a Drush command.
  • 1:45
    In our case, we want users to be able to type the command at the command line
  • 1:50
    and add a dash, dash, purge (--purge) flag.
  • 1:52
    When they do so, what we want to do is slightly modify the way that the command works.
  • 1:58
    So when the --purge flag is present,
  • 2:00
    we want the command to truncate all of the records
  • 2:03
    that exist in the table before generating new ones.
  • 2:07
    We're also going to look at different ways that you can prompt the user
  • 2:09
    for input from within your Drush command.
  • 2:12
    Even though our Drush command is something that gets run from the terminal,
  • 2:16
    we still have to think about things like user experience.
  • 2:18
    So we'll spend a little bit of time talking about how we can provide help
  • 2:21
    and additional documentation for our command.
  • 2:24
    It'd be nice if we could tie into the built-in Drush help system
  • 2:27
    so that when somebody asks Drush for help about our command,
  • 2:30
    we can tell them how it works.
  • 2:33
    After completing this series, you should understand
  • 2:35
    a lot more about the power of Drush, and how to write your own commands
  • 2:38
    in order to take advantage of some of that and augment your own workflow.
  • 2:42
    Hopefully, you'll also learn a bit about the Drush API,
  • 2:45
    and how to make use of some of the functions within it
  • 2:48
    in order to make your output more friendly,
  • 2:50
    to provide help text for your users, and so forth.
  • 2:53
    So let's go ahead and get started learning about writing our own Drush commands.
  • 0:00
    Carregar e Salvar Dados de Entidades de Configurações Traduzido em parceria com a MMDA (http://www.mmda.com.br)
  • 0:04
    [♫ Música tocando ♫]
  • 0:06
    [Visão Geral Sobre a Série Codificando para Drush] [Codificando para Drush, Capítulo 1 com Joe Shindelar]
  • 0:13
    Drush, ou o Drupal Shell, é uma aplicação de linha de comando poderosa
  • 0:16
    que facilita a interação de desenvolvedores Drupal
  • 0:18
    com um ambiente completo Drupal a partir da sua linha de comando
  • 0:23
    e fazer coisas como escrever scripts que ajudam a automatizar fluxos de trabalho,
  • 0:26
    instalar módulos, automatizar o deploy.
  • 0:29
    Todos os tipos de coisas diferentes que queremos fazer com o Drupal,
  • 0:31
    sem precisar utilizar uma interface de usuário para fazer.
  • 0:34
    Nessa série, iremos ver como você pode extender
  • 0:37
    a funcionalidade do Drush escrevendo seus próprios comandos Drush.
  • 0:40
    Iremos começar falando sobre o que é um comando,
  • 0:43
    o que são argumentos para um comando, e quais são as opções para um comando,
  • 0:46
    e como argumentos e opções se diferenciam uns dos outros.
  • 0:49
    Através do curso dessa série, iremos trabalhar com a escrita de comandos
  • 0:53
    que extendem a funcionalidade do nosso módulo Databasics.
  • 0:56
    Queremos um comando que um usuário possa rodar que irá gerar
  • 0:59
    vários conteúdos aleatórios e que insira isso na tabela databasics
  • 1:02
    para termos dados exemplares para testar.
  • 1:06
    Para fazer isso, iremos começar
  • 1:08
    criando um arquivo especial de comando no módulo Databasics.
  • 1:13
    Esses são arquivos nomeados especialmente que o Drush irá encontrar
  • 1:15
    e, nos quais ele irá procurar por uma implementação de hook_drush_command.
  • 1:19
    Iremos usar hook_drush_command para dizer ao Drush coisas como o nome do nosso comando,
  • 1:23
    uma descrição para o comando. Também iremos usar isso para dizer ao Drush
  • 1:26
    sobre os argumentos que alguém pode fornecer ao comando.
  • 1:29
    Em adição, podemos usar hook_drush_command
  • 1:32
    para dizer ao Drush sobre os argumentos que o nosso comando fornece.
  • 1:36
    No nosos caso, nosso comando irá pegar um argumento
  • 1:39
    para o número de registros que ele deve gerar.
  • 1:42
    Também iremos falar sobre especificar opções para um comando Drush.
  • 1:45
    No nosso caso, queremos que os usuários estejam aptos a digitar o comando na linha de comando
  • 1:50
    e adicionar uma flag traço, traço, purge (--purge).
  • 1:52
    Quando eles fizerem isso, o que queremos fazer é modificar levemente a maneira que esse comando trabalha.
  • 1:58
    Então quando a flag --purge está presente,
  • 2:00
    queremos que o comando faça um truncate de todos os registros
  • 2:03
    que existem na tablea antes de gerar novos registros.
  • 2:07
    Também iremos dar uma olhada sobre as diferentes maneiras que você pode interagir com o usuário
  • 2:09
    para entrada no seu comando Drush.
  • 2:12
    Mesmo que o nosso comando Drush é algo que é rodado no terminal,
  • 2:16
    nós ainda temos que pensar sobre experiência do usuário.
  • 2:18
    Então iremos gastar um pouco de tempo falando sobre como podemos oferecer ajuda
  • 2:21
    e documentação adicional para nosso comando.
  • 2:24
    Seria legal se pudéssemos entrar no sistema nativo de ajuda do Drush
  • 2:27
    para que quando alguém peça ajuda ao Drush sobre nosso comando
  • 2:30
    nós podemos dizer a eles como funciona
  • 2:33
    Depois de completar essa série, você entenderá
  • 2:35
    muito mais sobre o poder o Drush, e como escrever seus próprios comandos
  • 2:38
    para aproveitar um pouco disso e aumentar seu próprio workflow.
  • 2:42
    É esperado que você também aprenda um pouco sobre a API Drush,
  • 2:45
    e como utilizar algumas das suas funções
  • 2:48
    para fazer sua saída de dados mais amigável,
  • 2:50
    para fornecer ajuda aos seus usuários, e etc.
  • 2:53
    Então vamos em frente e começar a aprender sobre escrever nossos próprios comandos Drush.
Loading ...

Overview of the Coding for Drush Series

Loading...

Drush is one of the coolest tools available for Drupal developers. It provides all sorts of commands for assisting in Drupal development, automating workflows and in general making it easier to script various parts of the drupal workflow. But sometimes the commands that come with drush or those available from other modules just don’t quite cut it. Sometimes we need to automate things that are specific to our own site. Drush commands can also be really useful for quick one off data migration tasks and other things that writing a whole module for might just be overkill. In this series we’re going to learn about:

  • What a drush command is and where drush finds the commands that it can use
  • How to use hook_drush_command in order to tell drush that we want to provide new commands
  • How to output data from our command’s using some of the helper functions built in to drush.
  • Writing our own custom drush commands
  • Passing arguments to a command
  • Passing options to a command
  • How to prompt the user for input while your command is executing
  • Creating policy files for drush
  • Creating make files

This series assumes that you’re already familiar with the basics of drush, that you’ve got it installed on your system already and that you’re comfortable with running drush commands provided by core and contrib modules. If you’re not familiar with drush yet you might want to start with the Introduction to Drush Series which covers all of the prerequisites for this series. We will be using the Databasics module, which we have created and used in previous series on Drupalize.Me. The original module was created in the Module Development for Drupal 7 series, and we have extended the module with Views integration in the Coding for Views for Drupal 7 series.

Additional resources: