¿Qué es un comando chain?

Un comando chain es un comando personalizado que le ayuda a automatizar la ejecución de comandos múltiples, permitiéndole definir y leer un archivo YAML externo que contiene el nombre de definición, las opciones y argumentos de múltiples comandos y ejecutar esa lista basándose en la secuencia definida en el archivo.

Características de los comandos chain:

Descubrimiento de los archivos YAML

Los comandos chain son descubiertos si se encuentran en las siguientes rutas:

  • Globalmente * ~/.console/chain
  • Por sitio * path/to/site/console/chain

Definir los comodines

Puede definir los comodines usando {{name}} y puede pasar un --clave=valor desde la consola como una opción de comando --nombre=[VALOR] al ejecutar el comando.

Si define comodines y no le pasa un valor usando la consola, el comodín será convertido en una pregunta durante la ejecución del modo interactivo.

commands:
  # Crear un proyecto Drupal usando DrupalComposer
  - command: exec
    arguments:
      bin: composer create-project {{repository}} {{directory}} --prefer-dist --no-progress --no-interaction
  # Instalar Drupal
  - command: exec
    arguments:
      bin: drupal site:install {{profile}} --root={{directory}} --db-type="sqlite" --no-interaction
  # Iniciar el servidor incorporado de PHP
  - command: exec
    arguments:
      bin: drupal server --root={{directory}}

Establecer valores por defecto para los comodines

Se puede usar la sección variables para definir valores por defecto para los comodines.

vars:
  repository:
    - drupal-composer/drupal-project:8.x-dev
    - acquia/lightning-project
    - acquia/reservoir-project
  profile: standard

Puede definir comodines como un único valor o como un array. Esta definición será usada para decidir el tipo de pregunta que aparecerá al ejecutar este comando al usar el modo interactivo.

Leer variables de entorno:

Puede leer variables de entorno usando {{ env("ENVIRONMENT_VAR_NAME") }}.

command:
  name: site:install:env
  description: 'Install site using environment placeholders'
commands:
  # Instalar Drupal
  - command: site:install
    options:
      langcode: en
      db-type: '{{ env("DATABASE_TYPE") }}'
      db-host: '{{ env("DATABASE_HOST") }}'
      db-name: '{{ env("DATABASE_NAME") }}'
      db-user: '{{ env("DATABASE_USER") }}'
      db-pass: '{{ env("DATABASE_PASSWORD") }}'
      db-port: '{{ env("DATABASE_PORT") }}'
      site-name: 'Drupal 8 site'
      site-mail: admin@example.org # default email
      account-name: admin # default account
      account-mail: admin@example.org # default email
      account-pass: admin # default pass
    arguments:
      profile: 'standard'

Todas las variables de entorno usadas en la definición de un comando chain son obligatorias.