Created
September 16, 2012 16:30
-
-
Save lavoiesl/3733090 to your computer and use it in GitHub Desktop.
Batch update Drupal modules in command line
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Usage: drupal-install-module.sh module [6|7] | |
| # Installs module to most up-to-date version. Updates if already present | |
| # Specifiy Drupal version 6 or 7 | |
| # Works with themes as well | |
| # You must go to /update.php to complete the process afterwards | |
| # @link http://blog.lavoie.sl/2012/10/batch-update-drupal-modules.html | |
| if [ "$(basename $PWD)" != "modules" -a "$(basename $PWD)" != "themes" ]; then | |
| echo "*** You must reside in the modules or themes directory of Drupal" >&2 | |
| exit 2 | |
| fi | |
| module="$1" | |
| if [ -z "$module" ]; then | |
| echo "*** You must specify module name" >&2 | |
| exit 1 | |
| fi | |
| drupal_version=7 | |
| if [ -n "$2" ]; then | |
| if [ "$2" -eq "6" -o "$2" -eq "7"]; then | |
| drupal_version="$2" | |
| else | |
| echo "*** This scripts only support Drupal 6 or 7" >&2 | |
| exit 1 | |
| fi | |
| fi | |
| project="http://drupal.org/project/$module" | |
| archive=$(curl -sS "$project" | grep -oE "http://ftp\.drupal\.org/files/projects/$module(-|_)$drupal_version\..*\.tar\.gz" | head -n 1) | |
| if [ -z "$archive" ]; then | |
| echo "*** Unable to find project or project has no download link for Drupal $drupal_version" >&2 | |
| echo "*** Inspected page was $project" >&2 | |
| exit 3 | |
| fi | |
| version=$(echo $archive | grep -oE "$drupal_version\..*\.tar\.gz") | |
| version=${version/.tar.gz/} | |
| if [ -f "$module/$module.info" ]; then | |
| echo -n "$module is already installed, fetching current version... " | |
| last_updated=$(curl -sSI $archive | grep '^Last-Modified' | sed 's/Last-Modified: //') | |
| installed=$(grep "^datestamp" "$module/$module.info" | sed -e 's/^datestamp *= *//' | tr -d '"' | head -n 1) | |
| if [ $(TZ=GMT php -r "echo (strtotime('$last_updated') - $installed) < 100 ? 1 : 0;") = "1" ]; then | |
| echo "OK" | |
| exit | |
| else | |
| echo "Outdated" | |
| fi | |
| fi | |
| tar=$(mktemp -t drupal-module-XXXXXX.tar.gz) | |
| echo -n "Downloading... "; | |
| wget -q "$archive" -O "$tar" | |
| echo -n "Extracting... "; | |
| tar xzf "$tar" | |
| rm "$tar" | |
| echo "Done." |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Usage: drupal-update-modules.sh [6|7] | |
| # Updates all modules or themes in current folder | |
| # Specifiy Drupal version 6 or 7 | |
| # You must go to /update.php to complete the process afterwards | |
| # @link http://blog.lavoie.sl/2012/10/batch-update-drupal-modules.html | |
| options=$@ | |
| directories=$(ls -1d * | tr -d /) | |
| for directory in $directories; do | |
| drupal-install-module.sh $directory $options | |
| error=$? | |
| [ $error ] && exit $error | |
| done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment