'drush_alias_print', 'description' => 'Print site alias for the current drupal site.', 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_SITE, 'arguments' => array( 'site' => 'Site specification alias to print', ), 'examples' => array( 'drush alias print' => 'Print an alias record for the default site.', 'drush alias print dev.example.com/path/to/drupal#dev' => 'Print an alias record for the example.com dev site.', ), ); $items['alias list'] = array( 'callback' => 'drush_alias_list', 'description' => 'List all defined alias records.', 'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_SITE, ); return $items; } function drush_alias_list() { $all_site_aliases = drush_get_option('site-aliases', array()); // drush_print_r($all_site_aliases); foreach ($all_site_aliases as $alias => $alias_record) { $output = $alias; //TO DO: if ( ... add a flag for short output? ... ) { $output = $output . ': ' . drush_alias_get_site_specification($alias); //} drush_print($output); } $root = drush_get_context('DRUSH_DRUPAL_ROOT'); $files = drush_scan_directory($root . '/sites', 'settings.php', array('.', '..', 'CVS', 'all')); foreach ($files as $filename => $info) { if ($info->basename == 'settings.php') { $path = explode('/', $filename); array_pop($path); $site = array_pop($path); //drush_print($filename . ' ' . $info->basename . ' ' . $site . ' ' . $info->name); drush_print($site . ': ' . $root . '#' . $site); } } } function drush_alias_get_site_specification($site_alias) { $all_site_aliases = drush_get_option('site-aliases', array()); $result = '#' . $site_alias; if (array_key_exists($site_alias, $all_site_aliases)) { $site_alias_settings = $all_site_aliases[$site_alias]; if (array_key_exists('uri', $site_alias_settings)) { $result = '#' . $site_alias_settings['uri']; } if (array_key_exists('path-aliases', $site_alias_settings)) { $path_aliases = $site_alias_settings['path-aliases']; if (array_key_exists('!root', $path_aliases)) { $result = $path_aliases['!root'] . $result; } } if (array_key_exists('remote-host', $site_alias_settings)) { $result = $site_alias_settings['remote-host'] . $result; } } return $result; } function drush_alias_print() { $command = drush_get_command(); $specifications = $command['arguments']; if (!isset($specifications) || empty($specifications)) { $specifications = array(drush_get_option(array('l', 'uri'))); } foreach($specifications as $site_alias) { $alias_record = drush_get_alias_record($site_alias); $alias_name = drush_get_option('alias-name'); if (!isset($alias_name)) { $alias_name = $alias_record['uri']; } // we could just drush_print_r this, but it wouldn't look right. drush_print('$options[\'site-aliases\'][\'' . $alias_name . '\'] = array('); drush_alias_print_record_contents($alias_record); drush_print(');'); } } function drush_alias_print_record_contents($alias_record, $padding = ' ') { foreach ($alias_record as $key => $value) { if (is_array($value)) { drush_print($padding . "'" . $key . "' => array("); drush_alias_print_record_contents($value, $padding . ' '); drush_print($padding . '),'); } else { drush_print($padding . "'" . $key . "' => '" . $value . "',"); } } }