sparkfabrik/drush-pre-deploy

This package is abandoned and no longer maintained. The author suggests using the sparkfabrik/drush_pre_deploy package instead.

drush integration that enables "pre-deploy" hooks.

0.0.4 2020-09-29 07:46 UTC

This package is auto-updated.

Last update: 2023-06-25 07:19:54 UTC


README

This project is a drush integration that enables "pre-deploy" hooks.

Drush 10 introduced the drush deploy command with the intent to standardize drupal deployment. drush deploy is implemented in terms of a standard sequence of drush commands:

drush updatedb --no-cache-clear
drush cache:rebuild
drush config:import
drush cache:rebuild
drush deploy:hook

The very last step (drush deploy:hook) invokes HOOK_deploy_NAME hooks. The "deploy" hooks are similar to post_update hooks and are useful when you need to execute code at the very end of the deploy process.

This project introduces the concepts of "pre-deploy" hooks that are executed at the very beginning of the deploy process.

They take a similar form of the existing hooks, if your modules is named foo then in a foo.predeploy.php file you can write a function like this:

/**
 * Hook description here.
 */
function foo_predeploy_some_text_here(&$sandbox) {
}

Additionally, this project provides the deploy:pre-hook and deploy:pre-hook-status commands which are similar to the deploy:hook and deploy:hook-status commands. The first command runs pending "pre-deploy" hooks and the second one prints information about pending "pre-deploy" update hooks.

Installation

composer require sparkfabrik/drush_pre_deploy

This project requires drush at least at version 10.3.0.

  • In your project's main composer.json make sure installer-paths folder is set for "drupal-module" type:
"extra": {
  ...
  "installer-paths": {
    ...
    "web/modules/contrib/{$name}": ["type:drupal-module"],

To make sure the hook command is discovered, you need to add a custom "drush.yml" configuration in a drush folder like this:

.
└── ROOT_PROJECT_PATH/
    └── drush/
        └── drush.yml

Drush will discover this file automatically and will use its configuration to load commands. Add the following code into drush.yml:

drush:
  include:
  - ${env.PWD}/web/modules/contrib/drush_pre_deploy/src/global