Browse Source

Add drush plugin (#4490)

Lucas A. Rodrigues 5 years ago
parent
commit
f1799de0c9
3 changed files with 237 additions and 0 deletions
  1. 83 0
      plugins/drush/README.md
  2. 50 0
      plugins/drush/drush.complete.sh
  3. 104 0
      plugins/drush/drush.plugin.zsh

+ 83 - 0
plugins/drush/README.md

@@ -0,0 +1,83 @@
+# Drush
+
+## Description
+This plugin offers aliases and functions to make the work with drush easier and more productive.
+
+To enable it, add the `drush` to your `plugins` array in `~/.zshrc`:
+
+```
+plugins=(... drush)
+```
+
+## Aliases
+| Alias | Description                                                           | Command                     |
+|-------|-----------------------------------------------------------------------|-----------------------------|
+| dr    | Display drush help                                                    | drush                       |
+| drca  | Clear all drupal caches.                                              | drush cc all                |
+| drcb  | Clear block cache.                                                    | drush cc block              |
+| drcg  | Clear registry cache.                                                 | drush cc registry           |
+| drcj  | Clear css-js cache.                                                   | drush cc css-js             |
+| drcm  | Clear menu cache.                                                     | drush cc menu               |
+| drcml | Clear module-list cache.                                              | drush cc module-list        |
+| drcr  | Run all cron hooks in all active modules for specified site.          | drush core-cron             |
+| drct  | Clear theme-registry cache.                                           | drush cc theme-registry     |
+| drcv  | Clear views cache. (Make sure that the views module is enabled)       | drush cc views              |
+| drdmp | Backup database in a new dump.sql file                                | drush drush sql-dump --ordered-dump --result-file=dump.sql|
+| drf   | Display features status                                               | drush features              |
+| drfr  | Revert a feature module on your site.                                 | drush features-revert -y    |
+| drfu  | Update a feature module on your site.                                 | drush features-update -y    |
+| drfra | Revert all enabled feature module on your site.                       | drush features-revert-all   |
+| drif  | Flush all derived images.                                             | drush image-flush --all     |
+| drpm  | Show a list of available modules.                                     | drush pm-list --type=module |
+| drst  | Provides a birds-eye view of the current Drupal installation, if any. | drush core-status           |
+| drup  | Apply any database updates required (as with running update.php).     | drush updatedb              |
+| drups | List any pending database updates.                                    | drush updatedb-status       |
+| drv   | Show drush version.                                                   | drush version               |
+| drvd	| Delete a variable.																										| drush variable-del					|
+| drvg	| Get a list of some or all site variables and values.									| drush variable-get					|
+| drvs	| Set a variable.																												| drush variable-set					|
+
+## Functions
+
+### dren
+Download and enable one or more extensions (modules or themes).
+Must be invoked with one or more parameters. e.g.:
+`dren devel` or `dren devel module_filter views`
+
+### drf
+Edit drushrc, site alias, and Drupal settings.php files.
+Can be invoked with one or without parameters. e.g.:
+`drf 1`
+
+### dris
+Disable one or more extensions (modules or themes)
+Must be invoked with one or more parameters. e.g.:
+`dris devel` or `dris devel module_filter views`
+
+### drpu
+Uninstall one or more modules.
+Must be invoked with one or more parameters. e.g.:
+`drpu devel` or `drpu devel module_filter views`
+
+### drnew
+Creates a brand new drupal website.
+Note: As soon as the installation is complete, drush will print a username and a random password into the terminal:
+```
+Installation complete.  User name: admin  User password: cf7t8yqNEm
+```
+
+## Additional features
+
+### Autocomplete
+The [completion script for drush](https://github.com/drush-ops/drush/blob/8.0.1/drush.complete.sh) comes enabled with this plugin.
+So, it is possible to type a command:
+```
+drush sql
+```
+
+And as soon as the tab key is pressed, the script will display the available commands:
+```
+drush sql
+sqlc           sql-conf       sql-create     sql-dump       sql-query      sql-sanitize                
+sql-cli        sql-connect    sql-drop       sqlq           sqlsan         sql-sync
+```

+ 50 - 0
plugins/drush/drush.complete.sh

@@ -0,0 +1,50 @@
+# BASH completion script for Drush.
+#
+# Place this in your /etc/bash_completion.d/ directory or source it from your
+# ~/.bash_completion or ~/.bash_profile files.  Alternatively, source
+# examples/example.bashrc instead, as it will automatically find and source
+# this file.
+#
+# If you're using ZSH instead of BASH, add the following to your ~/.zshrc file
+# and source it.
+#
+#   autoload bashcompinit
+#   bashcompinit
+#   source /path/to/your/drush.complete.sh
+
+# Ensure drush is available.
+which drush > /dev/null || alias drush &> /dev/null || return
+
+__drush_ps1() {
+  f="${TMPDIR:-/tmp/}/drush-env-${USER}/drush-drupal-site-$$"
+  if [ -f $f ]
+  then
+    __DRUPAL_SITE=$(cat "$f")
+  else
+    __DRUPAL_SITE="$DRUPAL_SITE"
+  fi
+
+  # Set DRUSH_PS1_SHOWCOLORHINTS to a non-empty value and define a
+  # __drush_ps1_colorize_alias() function for color hints in your Drush PS1
+  # prompt. See example.prompt.sh for an example implementation.
+  if [ -n "${__DRUPAL_SITE-}" ] && [ -n "${DRUSH_PS1_SHOWCOLORHINTS-}" ]; then
+    __drush_ps1_colorize_alias
+  fi
+
+  [[ -n "$__DRUPAL_SITE" ]] && printf "${1:- (%s)}" "$__DRUPAL_SITE"
+}
+
+# Completion function, uses the "drush complete" command to retrieve
+# completions for a specific command line COMP_WORDS.
+_drush_completion() {
+  # Set IFS to newline (locally), since we only use newline separators, and
+  # need to retain spaces (or not) after completions.
+  local IFS=$'\n'
+  # The '< /dev/null' is a work around for a bug in php libedit stdin handling.
+  # Note that libedit in place of libreadline in some distributions. See:
+  # https://bugs.launchpad.net/ubuntu/+source/php5/+bug/322214
+  COMPREPLY=( $(drush --early=includes/complete.inc "${COMP_WORDS[@]}" < /dev/null 2> /dev/null) )
+}
+
+# Register our completion function. We include common short aliases for Drush.
+complete -o bashdefault -o default -o nospace -F _drush_completion d dr drush drush5 drush6 drush7 drush8 drush.php

+ 104 - 0
plugins/drush/drush.plugin.zsh

@@ -0,0 +1,104 @@
+# Drush support.
+
+function dren() {
+  drush en $@ -y
+}
+
+function dris() {
+  drush pm-disable $@ -y
+}
+
+function drpu() {
+  drush pm-uninstall $@ -y
+}
+
+function drf() {
+  if [[ $1 == "" ]] then
+    drush core-config
+  else
+    drush core-config --choice=$1
+  fi
+}
+
+function drfi() {
+  if [[ $1 == "fields" ]]; then
+    drush field-info fields
+  elif [[ $1 == "types" ]]; then
+    drush field-info types
+  else
+    drush field-info
+  fi
+}
+
+function drnew() {
+
+  cd ~
+  echo "Website's name: "
+  read WEBSITE_NAME
+
+  HOST=http://$(hostname -i)/
+
+  if [[ $WEBSITE_NAME == "" ]] then
+    MINUTES=$(date +%M:%S)
+    WEBSITE_NAME="Drupal-$MINUTES"
+    echo "Your website will be named: $WEBSITE_NAME"
+  fi
+
+  drush dl drupal --drupal-project-rename=$WEBSITE_NAME
+
+  echo "Type your localhost directory: (Leave empty for /var/www/html/)"
+  read DIRECTORY
+
+  if [[ $DIRECTORY == "" ]] then
+    DIRECTORY="/var/www/html/"
+  fi
+
+  echo "Moving to $DIRECTORY$WEBSITE_NAME"
+  sudo mv $WEBSITE_NAME $DIRECTORY
+  cd $DIRECTORY$WEBSITE_NAME
+
+  echo "Database's user: "
+  read DATABASE_USR
+  echo "Database's password: "
+  read -s DATABASE_PWD
+  echo "Database's name for your project: "
+  read DATABASE
+
+  DB_URL="mysql://$DATABASE_USR:$DATABASE_PWD@localhost/$DATABASE"
+  drush site-install standard --db-url=$DB_URL --site-name=$WEBSITE_NAME
+
+  open_command $HOST$WEBSITE_NAME
+  echo "Done"
+
+}
+
+# Aliases, sorted alphabetically.
+alias dr="drush"
+alias drca="drush cc all" # Deprecated for Drush 8
+alias drcb="drush cc block" # Deprecated for Drush 8
+alias drcg="drush cc registry" # Deprecated for Drush 8
+alias drcj="drush cc css-js"
+alias drcm="drush cc menu"
+alias drcml="drush cc module-list"
+alias drcr="drush core-cron"
+alias drct="drush cc theme-registry"
+alias drcv="drush cc views"
+alias drdmp="drush sql-dump --ordered-dump --result-file=dump.sql"
+alias drf="drush features"
+alias drfr="drush features-revert -y"
+alias drfu="drush features-update -y"
+alias drfra="drush features-revert-all"
+alias drif="drush image-flush --all"
+alias drpm="drush pm-list --type=module"
+alias drst="drush core-status"
+alias drup="drush updatedb"
+alias drups="drush updatedb-status"
+alias drv="drush version"
+alias drvd="drush variable-del"
+alias drvg="drush variable-get"
+alias drvs="drush variable-set"
+
+# Enable drush autocomplete support
+autoload bashcompinit
+bashcompinit
+source $(dirname $0)/drush.complete.sh