diff --git a/platform/delete.provision.inc b/platform/delete.provision.inc index 41c4e1a4b4a0bb61d60e7f1d74b05541c949c110..761d0c67766b844e1f2d6e7e4a0b64c2600074a7 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 6227119f14ce73d6abf34fb4ce74678b635d663c..6a93c6a91bf07bf74669b745bc3a645c49555512 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 1b142074ba38278e4860f92e2cb2eb0a41a60266..071ec3c8054bc31e87b9d4f4f3215e44cfc921d4 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 3ada16da4ab10f71127ca5221af9fb0e5e735592..a593cb437d0e91b5a4f0bb18cd5d647cf4586fe3 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 c2a9d827b8cf755fca895c56e532ab715589c3db..f57485367a956ee517612a1c9cddec657b779a00 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 bab5016a076011001fa9111bbf2b97bcf8964910..bfe8e4338c236d87cf92549b0299267065251c2a 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 55449c1f844d0a759d95c60ced4ecc783ed3976d..8a627b341673b2b936fb75b8e7689e1745db240c 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 0ce601d7ed6662a8f02b9cc8fa69a3ae43000d5f..268176474cf34c232c284c3f848218f3360c16fc 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;