I several folders containing symlinks to my drupal sites. I’d like to use this folder structure to create an alias so I can run commands on each group of sites.
I’m trying to do what “drush @sites status” will do, but on a smaller subset.
I wrote the following based on the docs
// List the instances from the OU instances folder $full_path = "/opt/drupal/sites/instances"; if ($handle = opendir("$full_path")) { while (false !== ($file = readdir($handle))) { if(is_dir($full_path."/".$file)) { if ($file != '.' && $file != '..') $instances[] = $file; } } } // Turn them into aliases so we just have to type @instance foreach ($instances as $instance) { $site_list = []; // Look at each instance $site_paths = $full_path . "/" . $instance; if ($file_handle = opendir("$site_paths")) { // List out the folders in this instance while (false !== ($site_folder = readdir($file_handle))) { if(is_dir($site_paths."/".$site_folder)) { // If the folder represents a drupal site if ($site_folder != '.' && $site_folder != '..') // Add it to this instances list $site_list[] = '@' . $site_folder; } } } $aliases[$instance] = array( 'site-list' => $site_list, ); } print_r($aliases);
The cheeky print_r on the end shows my array as
[partnership] => Array ( [site-list] => Array ( [0] => @www.1.co.uk [1] => @www.2.org [2] => @www.3.org.uk [3] => @www.4.org [4] => @www.5.eu [5] => @www.6.net [6] => @www.7.com [7] => @www.8-ri-2020.eu [8] => @www.9.edu [9] => @www.10.ac.uk [10] => @www.11.org [11] => @www.12.ac.uk [12] => @www.13.co.uk [13] => @www.14.org.uk [14] => @www.15.ac.uk ) )
I’ve changed the names to protect the innocent, but they are valid aliases.
When I run “drush @partnership status” I get
drush @partnership status You are about to execute 'status' non-interactively (--yes forced) on all of the following targets: Continue? (y/n): y Invalid argument supplied for foreach() backend.inc:661
How do I get drush to actually run through this alias list telling me the status of each site?
Sponsored by SupremePR