From d669cfa21158c454dbb2e692b736ea9a932b0404 Mon Sep 17 00:00:00 2001 From: Neil Drumm <drumm@delocalizedham.com> Date: Tue, 15 Jun 2010 17:39:01 -0700 Subject: [PATCH] Aegir site alias cleanup. --- platform/delete.provision.inc | 2 +- platform/deploy.provision.inc | 5 +---- platform/install.provision.inc | 2 -- platform/migrate.provision.inc | 2 +- platform/provision_drupal.drush.inc | 34 ++++++++++------------------- platform/verify.provision.inc | 2 -- provision.environment.inc | 3 ++- provision.file.inc | 7 +++++- 8 files changed, 22 insertions(+), 35 deletions(-) diff --git a/platform/delete.provision.inc b/platform/delete.provision.inc index 41c4e1a4b..761d0c677 100644 --- a/platform/delete.provision.inc +++ b/platform/delete.provision.inc @@ -21,7 +21,7 @@ function drush_provision_drupal_provision_delete() { _provision_recursive_delete(d()->site_path); // we remove the aliases even if redirection is enabled as a precaution // if redirection is enabled, keep silent about errors - _provision_drupal_delete_aliases(drush_get_option('aliases', array(), 'site'), drush_get_option('redirection')); + _provision_drupal_delete_aliases(d()->aliases); } elseif (d()->type === 'platform') { if (provision_drupal_find_sites()) { diff --git a/platform/deploy.provision.inc b/platform/deploy.provision.inc index 6227119f1..6a93c6a91 100644 --- a/platform/deploy.provision.inc +++ b/platform/deploy.provision.inc @@ -77,10 +77,9 @@ function drush_provision_drupal_pre_provision_deploy_rollback() { } function drush_provision_drupal_provision_deploy() { - _provision_drupal_maintain_aliases(d()->uri); + _provision_drupal_maintain_aliases(); } - function drush_provision_drupal_post_provision_deploy() { provision_prepare_environment(); _provision_drupal_create_settings_file(); @@ -92,7 +91,5 @@ function drush_provision_drupal_post_provision_deploy() { drush_include_engine('drupal', 'deploy'); drush_set_option('packages', _scrub_object(provision_drupal_system_map()), 'site'); _provision_drupal_rebuild_caches(); - drush_set_option('aliases', drush_get_option('aliases'), 'site'); - drush_set_option('redirection', drush_get_option('redirection'), 'site'); } } diff --git a/platform/install.provision.inc b/platform/install.provision.inc index 1b142074b..071ec3c80 100644 --- a/platform/install.provision.inc +++ b/platform/install.provision.inc @@ -61,13 +61,11 @@ function drush_provision_drupal_provision_install_rollback() { } } - /** * Finish the installation, regenerate the caches on the site so that * any changes to things such as available modules/ themes can take affect. */ function drush_provision_drupal_post_provision_install() { - drush_set_option('aliases', drush_get_option('aliases'), 'site'); drush_set_option('installed', TRUE, 'site'); _provision_drupal_rebuild_caches(); drush_set_option('packages', _scrub_object(provision_drupal_system_map()), 'site'); diff --git a/platform/migrate.provision.inc b/platform/migrate.provision.inc index 3ada16da4..a593cb437 100644 --- a/platform/migrate.provision.inc +++ b/platform/migrate.provision.inc @@ -82,7 +82,7 @@ function drush_provision_drupal_post_provision_migrate() { drush_set_option('installed', FALSE); // we remove the aliases even if redirection is enabled as a precaution // if redirection is enabled, keep silent about errors - _provision_drupal_delete_aliases(drush_get_option('aliases', array()), drush_get_option('redirection')); + _provision_drupal_delete_aliases(d()->aliases); _provision_recursive_delete(d()->site_path); d()->service('http')->sync(d()->site_path); } diff --git a/platform/provision_drupal.drush.inc b/platform/provision_drupal.drush.inc index c2a9d827b..f57485367 100644 --- a/platform/provision_drupal.drush.inc +++ b/platform/provision_drupal.drush.inc @@ -324,24 +324,20 @@ function _provision_drupal_get_cvs_versions($files) { } /** - * Create and remove symlinks for each of the possible domain aliases of an existing site + * Create and remove symlinks for each of the possible domain aliases of an + * existing site. */ function _provision_drupal_maintain_aliases() { if (d()->type === 'site') { - // First we delete all the old aliases - drush_set_option('aliases', drush_get_option('aliases'), 'site'); - _provision_drupal_delete_aliases(drush_get_option('aliases', array(), 'site'), false); - - if (!drush_get_option('redirection')) { - $aliases = drush_get_option('aliases'); - if (!is_array($aliases)) { - $aliases = explode(",", $aliases); - } - foreach($aliases as $alias) { - if (trim($alias)) { + _provision_drupal_delete_aliases(d()->aliases); + + if (!d()->redirection) { + foreach(d()->aliases as $alias) { + if ($alias = trim($alias)) { provision_file()->symlink(d()->uri, d()->root . '/sites/' . $alias) ->succeed('Created symlink for alias @target') ->fail('Could not create symlink for alias @target'); + d()->service('http')->sync(d()->root . '/sites/' . $alias); } } } @@ -351,21 +347,13 @@ function _provision_drupal_maintain_aliases() { /** * Delete a list of aliases */ -function _provision_drupal_delete_aliases($aliases, $silent = false) { - if (!is_array($aliases)) { - $aliases = explode(",", $aliases); - } - if ($silent) { - $error = NULL; - } - else { - $error = 'Could not remove symlink for alias @path'; - } +function _provision_drupal_delete_aliases($aliases) { foreach ($aliases as $alias) { if ($alias = trim($alias)) { provision_file()->unlink(d()->root . '/sites/' . $alias) ->succeed('Removed symlink for alias @path') - ->fail($error); + ->fail('Could not remove symlink for alias @path'); + d()->service('http')->sync(d()->root . '/sites/' . $alias); } } } diff --git a/platform/verify.provision.inc b/platform/verify.provision.inc index bab5016a0..bfe8e4338 100644 --- a/platform/verify.provision.inc +++ b/platform/verify.provision.inc @@ -78,8 +78,6 @@ class provisionConfig_global_settings extends provisionConfig { function drush_provision_drupal_post_provision_verify() { if (d()->type === 'site') { _provision_drupal_rebuild_caches(); - drush_set_option('aliases', drush_get_option('aliases'), 'site'); - drush_set_option('redirection', drush_get_option('redirection'), 'site'); drush_set_option('installed', TRUE, 'site'); } } diff --git a/provision.environment.inc b/provision.environment.inc index 55449c1f8..8a627b341 100644 --- a/provision.environment.inc +++ b/provision.environment.inc @@ -416,7 +416,6 @@ class provisionServer extends provisionEnvironment { } } } - } } @@ -461,6 +460,7 @@ class provisionSite extends provisionEnvironment { '--site_port' => 'site: port the site is hosted on; default 80', '--language' => 'site: site language; default en', '--aliases' => 'site: comma-separated URIs', + '--redirection' => 'site: boolean for whether --aliases should redirect; default false', '--client_email' => 'site: email for the site owner', '--profile' => 'site: Drupal profile to use; default default', ); @@ -487,6 +487,7 @@ class provisionSite extends provisionEnvironment { $this->setProperty('site_port', 80); $this->setProperty('client_email'); $this->setProperty('aliases', array(), TRUE); + $this->setProperty('redirection', FALSE); $this->setProperty('db_server', '@server_localhost'); $this->is_oid('db_server'); diff --git a/provision.file.inc b/provision.file.inc index 0ce601d7e..268176474 100644 --- a/provision.file.inc +++ b/provision.file.inc @@ -116,7 +116,12 @@ class provisionFileSystem extends provisionChainedState { function unlink($path) { $this->_clear_state(); - $this->last_status = unlink($path); + if (file_exists($path) || is_link($path)) { + $this->last_status = unlink($path); + } + else { + $this->last_status = TRUE; + } $this->tokens = array('@path' => $path); return $this; -- GitLab