? .provision.drush.inc.swp
? .provision.inc.swp
? platform/.backup.provision.inc.swp
? platform/.deploy.provision.inc.swp
? platform/.disable.provision.inc.swp
? platform/.drupal_6_install.inc.swp
? platform/.drupal_6_update.inc.swp
? platform/.drupal_deploy.inc.swp
? platform/.migrate.provision.inc.swp
? platform/.provision_drupal.drush.inc.swp
? platform/.update.provision.inc.swp
Index: provision.drush.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/provision.drush.inc,v
retrieving revision 1.11
diff -u -r1.11 provision.drush.inc
--- provision.drush.inc	20 Mar 2009 16:13:24 -0000	1.11
+++ provision.drush.inc	24 Mar 2009 06:48:27 -0000
@@ -34,83 +34,18 @@
  *   rename  - Change the url of a site. This requires moving of files, and numerous other issues.
  */
 
+// Do not allow the program to be run as the root user. ever
+$name = posix_getpwuid(posix_geteuid());
+if ($name['name'] == 'root') {
+  return drush_set_error(PROVISION_IS_ROOT, dt('You are running the provision script as the root user. Exiting'));
+}
+
 /**
  * @defgroup provisiondrush Command line interface for Provision.
  * @{
  */
 include_once('provision.inc');
 include_once('provision.path.inc');
-provision_init();
-/** 
- * Implementation of hook_init
- *
- * Provide defines for all the major paths and settings.
- * These are settings that must not be modified during the running of the
- * program, but are configurable.
- */
-function provision_init() {
-  // Do not allow the program to be run as the root user. ever
-  $name = posix_getpwuid(posix_geteuid());
-  if ($name['name'] == 'root') {
-    return drush_set_error(PROVISION_IS_ROOT, dt('You are running the provision script as the root user. Exiting'));
-  }
-
-  // Set up defines for platform
-  $docroot = drush_get_option(array("r", "root"), $_SERVER['PWD']);
-  
-  drush_set_default('provision_domain', $_SERVER['HTTP_HOST']);
-
-  // Paths
-  $path = drush_set_default('docroot_path', rtrim(($docroot) ? $docroot : $_SERVER['DOCUMENT_ROOT'], '/'));
-  drush_set_default('sites_path', $path . '/sites');
-
-  $parts = explode("/", $path);
-  array_pop($parts);
-  $parent_path = drush_set_default('parent_path', implode("/" , $parts));
-
-
-  drush_set_default('backup_path', $parent_path . '/backups');
-  drush_set_default('config_path', $parent_path . '/config');
-
-  $config_path = drush_get_option('config_path');
-  drush_set_default('vhost_path', $config_path . '/vhost.d');
-
-  // Commands
-  drush_set_default('restart_cmd', _provision_default_restart_cmd());
-
-  // System account
-  drush_set_default('web_group', _provision_default_web_group());
-  drush_set_default('script_user', get_current_user());
-
-  // Redirection urls
-  drush_set_default('master_url', $GLOBALS['base_url']);
-  $master_url = drush_get_option('master_url');
-  drush_set_default('web_disable_url', $master_url .'/provision/disabled');
-  drush_set_default('web_maintenence_url', $master_url .'/provision/maintenance');
-
-  // Database
-  drush_set_default('master_db', $GLOBALS['db_url']);
-
-  $master_db = drush_get_option('master_db');
-  $db = parse_url($master_db);
-  drush_set_default('master_db_user', $db['user']);
-  drush_set_default('master_db_passwd', $db['pass']);
-
-  drush_set_default('master_db_host', $db['host']);
-  drush_set_default('db_host', $db['host']);
- 
-  drush_set_default('master_db_type', $db['scheme']);
-  drush_set_default('db_type', $db['scheme']);
-
-  drush_set_default('publish_path', drush_get_option('docroot_path'));
-  drush_set_default('site_url', $url); 
-  drush_set_default('profile', 'default');
-  drush_set_default('web_ip', '127.0.0.1');
-  drush_set_default('web_port', 80); 
-  drush_set_default('language', 'en');
-  drush_set_default('aliases', array());
-}
-
 
 /**
  * Implementation of hook_drush_command().
@@ -122,7 +57,7 @@
     'callback arguments' => array('install'),
     'arguments' => array('domain.com' => dt('The domain of the site to install.')),
     'description' => dt('Provision a new site using the provided data.'),
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
 
   $items['provision import'] = array(
@@ -130,7 +65,7 @@
     'callback arguments' => array('import'),
     'arguments' => array('domain.com' => dt('The domain of the site to import.')),
     'description' => dt('Turn an already running site into a provisioned site.'),
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
 
   $items['provision update'] = array(
@@ -138,7 +73,7 @@
     'callback arguments' => array('update'),
     'arguments' => array('domain.com' => dt('The domain of the site to update.')),
     'description' => dt('Run any outstanding updates on the site.'),
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
   
   $items['provision backup'] = array(
@@ -147,7 +82,7 @@
     'arguments' => array('domain.com' => dt('The domain of the site to back up.')),
     'optional arguments' => array('backup-file' => dt('The file to save the backup to. This will be a gzipped tarball.')),
     'description' => dt('Generate a back up for the site.'),
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
   
   $items['provision enable'] = array(
@@ -155,14 +90,14 @@
     'callback arguments' => array('enable'), 
     'arguments' => array('domain.com' => dt('The domain of the site to enable (only if enabled).')),
     'description' => 'Enable a disabled site.',
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
   $items['provision disable'] = array(
     'callback' => 'provision_command',
     'callback arguments' => array('disable'), 
     'arguments' => array('domain.com' => dt('The domain of the site to disable (only if disabled).')),    
     'description' => 'Disable a site.',
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
 
   $items['provision verify'] = array(
@@ -170,7 +105,7 @@
     'callback arguments' => array('verify'),
     'arguments' => array('domain.com' => dt('The domain of the site to verify).')),    
     'description' => 'Verify that the provisioning framework is correctly installed.',
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT, 
   );
  
   $items['provision restore'] = array(
@@ -179,7 +114,7 @@
     'description' => 'Restore the site to a previous backup. This will also generate a backup of the site as it was.',
     'arguments' => array('domain.com' => dt('The domain of the site to be restored'),
       'site_backup.tar.gz' => dt('The backup to restore the site to.')),
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
 
   $items['provision deploy'] = array(
@@ -188,7 +123,7 @@
     'description' => 'Deploy an existing backup to a new url.',
     'arguments' => array('domain.com' => dt('The domain to deploy the site package to.'),
       'site_backup.tar.gz' => dt('The backup to deploy.')),
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
 
   $items['provision migrate'] = array(
@@ -197,14 +132,14 @@
     'description' => 'Migrate a site between platforms.',
     'arguments' => array('domain.com' => dt('The domain to migrate. Any outstanding updates will be run.'),
       '/path/to/platform' => dt('The platform to migrate the site to.')),
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
  
   $items['provision delete'] = array(
     'callback' => 'provision_command',
     'callback arguments' => array('delete'),
     'description' => 'Delete a site.',
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
 
   $items['provision cron'] = array(
@@ -212,7 +147,7 @@
     'callback arguments' => array('cron'),
     'description' => 'Run cron process for site.',
     'arguments' => array('domain.com' => dt('The domain of the site to be processed')),
-    'bootstrap' => -1
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_ROOT
   );
  
   return $items;
Index: provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/provision.inc,v
retrieving revision 1.64
diff -u -r1.64 provision.inc
--- provision.inc	20 Mar 2009 16:13:24 -0000	1.64
+++ provision.inc	24 Mar 2009 06:48:31 -0000
@@ -93,13 +93,13 @@
     _drush_log_drupal_messages();
   }
   if (!drush_get_error()) {
-    $success = provision_invoke($hook, $arg1, $arg2, $arg3, $arg4, $arg5);
-    if ($success) {
-      foreach (drush_command_implements('provision_finalize') as $name) {
-        $func = $name . '_provision_finalize';
-        $func($arg1, $arg2, $arg3, $arg4, $arg5);
-        _drush_log_drupal_messages();
-      }
+    provision_invoke($hook, $arg1, $arg2, $arg3, $arg4, $arg5);
+  }
+  if (!drush_get_error()) {
+    foreach (drush_command_implements('provision_finalize') as $name) {
+      $func = $name . '_provision_finalize';
+      $func($arg1, $arg2, $arg3, $arg4, $arg5);
+      _drush_log_drupal_messages();
     }
   }
 }
@@ -159,7 +159,7 @@
 
     // The provision 0.1 config data might contain older data,
     // so any data in the new drushrc.php file would be newer.
-    $site_context = _drush_get_context('site');
+    $site_context = drush_get_context('site');
     $site_context = array_merge($data, $site_context);
     drush_set_context('site', $site_context);
   }
@@ -351,21 +351,6 @@
   return $group;
 }
 
-function provision_internal_init($url, $bootstrap = TRUE) {
-  $url = ($url) ? $url : 'default';
-  $drupal_base_url = parse_url(sprintf("http://" . $url));
-  $_SERVER['HTTP_HOST'] = $drupal_base_url['host'];
-  $_SERVER['PHP_SELF'] = '/index.php';
-  $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] = $_SERVER['PHP_SELF'];
-  $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
-  $_SERVER['REQUEST_METHOD'] = NULL;
-  $_SERVER['SERVER_SOFTWARE'] = NULL;
-  if ($bootstrap) {
-    include_once('./includes/bootstrap.inc');
-    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
-  }
-}
-
 function provision_password($length = 10) {
   // This variable contains the list of allowable characters for the
   // password. Note that the number 0 and the letter 'O' have been
Index: db_server/provision_mysql.drush.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/db_server/provision_mysql.drush.inc,v
retrieving revision 1.5
diff -u -r1.5 provision_mysql.drush.inc
--- db_server/provision_mysql.drush.inc	20 Mar 2009 16:13:24 -0000	1.5
+++ db_server/provision_mysql.drush.inc	24 Mar 2009 06:48:32 -0000
@@ -16,6 +16,20 @@
 define('PROVISION_DB_IMPORT_FAILED', 'PROVISION_DB_IMPORT_FAILED');
 
 
+function provision_mysql_provision_init() {
+  drush_set_default('master_db', $GLOBALS['db_url']);
+  $master_db = drush_get_option('master_db');
+  $db = parse_url($master_db);
+  drush_set_default('master_db_user', $db['user']);
+  drush_set_default('master_db_passwd', $db['pass']);
+
+  drush_set_default('master_db_host', $db['host']);
+  drush_set_default('db_host', $db['host']);
+ 
+  drush_set_default('master_db_type', $db['scheme']);
+  drush_set_default('db_type', $db['scheme']);
+}
+
 function provision_mysql_provision_finalize() {
   provision_db_close();
 }
Index: platform/backup.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/backup.provision.inc,v
retrieving revision 1.5
diff -u -r1.5 backup.provision.inc
--- platform/backup.provision.inc	20 Mar 2009 16:13:24 -0000	1.5
+++ platform/backup.provision.inc	24 Mar 2009 06:48:32 -0000
@@ -10,8 +10,10 @@
  * Make sure the site is installed and enabled, and that we have a valid target to back up to.
  */
 function provision_drupal_provision_backup_validate($url = NULL, $backup_file = NULL) {
-  _provision_drupal_url_required();
-  _provision_drupal_valid_installed_site();
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
+  if (!drush_get_option('installed')) {
+     drush_set_error(PROVISION_DRUPAL_SITE_FOUND);
+   }
 
   // This is the actual drupal provisioning requirements. 
   if (!is_dir(drush_get_option('backup_path'))) {
Index: platform/deploy.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/deploy.provision.inc,v
retrieving revision 1.8
diff -u -r1.8 deploy.provision.inc
--- platform/deploy.provision.inc	20 Mar 2009 16:13:24 -0000	1.8
+++ platform/deploy.provision.inc	24 Mar 2009 06:48:32 -0000
@@ -25,7 +25,6 @@
  */
 function provision_drupal_provision_deploy_validate($url = null, $backup_file = null) {
   _provision_drupal_url_required();
-  _provision_drupal_valid_not_installed_site();
 
   $exists = provision_path("exists", $backup_file, TRUE,
       dt("Deploying site from @path"),
@@ -45,6 +44,7 @@
     dt('Failed to extract the contents of @path'),
     PROVISION_BACKUP_EXTRACTION_FAILED);
   if ($extracted) {
+    drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
     // @TODO Clear up this properly.
 //    $old_data = provision_get_site_data($url);
 //    $data = array_merge($old_data, $data); 
@@ -54,7 +54,7 @@
 /**
  * Remove the extracted site directory
  */
-function provision_provision_pre_deploy_rollback($url) {
+function provision_drupal_provision_pre_deploy_rollback($url) {
   _provision_recursive_delete(drush_get_option('sites_path') ."/$url");
 }
 
Index: platform/disable.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/disable.provision.inc,v
retrieving revision 1.2
diff -u -r1.2 disable.provision.inc
--- platform/disable.provision.inc	20 Mar 2009 16:13:24 -0000	1.2
+++ platform/disable.provision.inc	24 Mar 2009 06:48:33 -0000
@@ -12,8 +12,11 @@
  * Make sure the command we are running is on an installed site.
  */
 function provision_drupal_provision_disable_validate() {
-  _provision_drupal_url_required();
-  _provision_drupal_valid_installed_site();
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
+
+  if (!drush_get_option('installed')) {
+     drush_set_error(PROVISION_DRUPAL_SITE_FOUND);
+   }
 }
 
 /**
Index: platform/drupal_5_install.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/drupal_5_install.inc,v
retrieving revision 1.3
diff -u -r1.3 drupal_5_install.inc
--- platform/drupal_5_install.inc	20 Mar 2009 16:13:24 -0000	1.3
+++ platform/drupal_5_install.inc	24 Mar 2009 06:48:34 -0000
@@ -105,7 +105,7 @@
 
 function install_main() {
   require_once './includes/bootstrap.inc';
-  drupal_bootstrap(DRUPAL_BOOTSTRAP_CONFIGURATION);
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_CONFIGURATION);
   // This must go after drupal_bootstrap(), which unsets globals!
   global $profile, $install_locale, $client_email;
   require_once './modules/system/system.install';
@@ -116,8 +116,7 @@
   // Drupal may already be installed.
   if ($verify) {
     // Establish a connection to the database.
-    require_once './includes/database.inc';
-    db_set_active();
+    drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_DATABASE);
     // Check if Drupal is installed.
     if (install_verify_drupal()) {
       drush_set_error(PROVISION_DRUPAL_SITE_INSTALLED, st('Site is already installed'));
@@ -168,7 +167,7 @@
   // Perform actual installation defined in the profile.
   drupal_install_profile($profile, $modules);
 
-  drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
 
   // Show profile finalization info.
   $function = $profile .'_profile_final';
Index: platform/drupal_6_install.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/drupal_6_install.inc,v
retrieving revision 1.3
diff -u -r1.3 drupal_6_install.inc
--- platform/drupal_6_install.inc	20 Mar 2009 16:13:24 -0000	1.3
+++ platform/drupal_6_install.inc	24 Mar 2009 06:48:37 -0000
@@ -114,7 +114,7 @@
 
 function install_main() {
   require_once './includes/bootstrap.inc';
-  drupal_bootstrap(DRUPAL_BOOTSTRAP_CONFIGURATION);
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_CONFIGURATION);
 
   // This must go after drupal_bootstrap(), which unsets globals!
   global $profile, $install_locale, $client_email, $conf, $url;
@@ -148,9 +148,7 @@
     require_once './includes/cache.inc';
     $conf['cache_inc'] = './includes/cache.inc';
 
-    // Establish a connection to the database.
-    require_once './includes/database.inc';
-    db_set_active();
+    drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_DATABASE);
 
     if (install_verify_drupal()) {
       return drush_set_error(PROVISION_DRUPAL_SITE_INSTALLED);
@@ -209,11 +207,21 @@
     return drush_set_error(PROVISION_DRUPAL_INSTALL_FAILED);
   }
 
-  drupal_install_system();
-  $modules = array_diff($modules, array('system'));
+  $system_path = dirname(drupal_get_filename('module', 'system', NULL));
+  require_once './'. $system_path .'/system.install';
+  module_invoke('system', 'install');
+  $system_versions = drupal_get_schema_versions('system');
+  $system_version = $system_versions ? max($system_versions) : SCHEMA_INSTALLED;
+  db_query("INSERT INTO {system} (filename, name, type, owner, status, throttle, bootstrap, schema_version) VALUES('%s', '%s', '%s', '%s', %d, %d, %d, %d)", $system_path .'/system.module', 'system', 'module', '', 1, 0, 0, $system_version);
+  // Now that we've installed things properly, bootstrap the full Drupal environment
 
-  drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
+  module_rebuild_cache();
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
+  $modules = array_diff($modules, array('system'));
 
+  if ($install_locale != 'en') {
+    $modules = array_merge($modules, array('locale'));
+  }
   /**
    * Further installation tasks
    *
@@ -232,8 +240,10 @@
       array("@module" => $files[$module]->info['name'])));
   }
 
+  drush_log("Initial locale import");
   // locale-initial-import and locale-inintial-batch tasks
   if (!empty($install_locale) && ($install_locale != 'en')) {
+    include_once 'includes/locale.inc';
     // Enable installation language as default site language.
     locale_add_language($install_locale, NULL, NULL, NULL, NULL, NULL, 1, TRUE);
     // Collect files to import for this language.
Index: platform/drupal_6_update.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/drupal_6_update.inc,v
retrieving revision 1.3
diff -u -r1.3 drupal_6_update.inc
--- platform/drupal_6_update.inc	22 Feb 2009 22:43:57 -0000	1.3
+++ platform/drupal_6_update.inc	24 Mar 2009 06:48:41 -0000
@@ -7,13 +7,309 @@
  *   which has been modified to allow being run from the command
  *   line.
  */
+define('MAINTENANCE_MODE', 'update');
+
+/**
+ * Add a column to a database using syntax appropriate for PostgreSQL.
+ * Save result of SQL commands in $ret array.
+ *
+ * Note: when you add a column with NOT NULL and you are not sure if there are
+ * already rows in the table, you MUST also add DEFAULT. Otherwise PostgreSQL
+ * won't work when the table is not empty, and db_add_column() will fail.
+ * To have an empty string as the default, you must use: 'default' => "''"
+ * in the $attributes array. If NOT NULL and DEFAULT are set the PostgreSQL
+ * version will set values of the added column in old rows to the
+ * DEFAULT value.
+ *
+ * @param $ret
+ *   Array to which results will be added.
+ * @param $table
+ *   Name of the table, without {}
+ * @param $column
+ *   Name of the column
+ * @param $type
+ *   Type of column
+ * @param $attributes
+ *   Additional optional attributes. Recognized attributes:
+ *     not null => TRUE|FALSE
+ *     default  => NULL|FALSE|value (the value must be enclosed in '' marks)
+ * @return
+ *   nothing, but modifies $ret parameter.
+ */
+function db_add_column(&$ret, $table, $column, $type, $attributes = array()) {
+  if (array_key_exists('not null', $attributes) and $attributes['not null']) {
+    $not_null = 'NOT NULL';
+  }
+  if (array_key_exists('default', $attributes)) {
+    if (is_null($attributes['default'])) {
+      $default_val = 'NULL';
+      $default = 'default NULL';
+    }
+    elseif ($attributes['default'] === FALSE) {
+      $default = '';
+    }
+    else {
+      $default_val = "$attributes[default]";
+      $default = "default $attributes[default]";
+    }
+  }
+
+  $ret[] = update_sql("ALTER TABLE {". $table ."} ADD $column $type");
+  if (!empty($default)) {
+    $ret[] = update_sql("ALTER TABLE {". $table ."} ALTER $column SET $default");
+  }
+  if (!empty($not_null)) {
+    if (!empty($default)) {
+      $ret[] = update_sql("UPDATE {". $table ."} SET $column = $default_val");
+    }
+    $ret[] = update_sql("ALTER TABLE {". $table ."} ALTER $column SET NOT NULL");
+  }
+}
+
+/**
+ * Change a column definition using syntax appropriate for PostgreSQL.
+ * Save result of SQL commands in $ret array.
+ *
+ * Remember that changing a column definition involves adding a new column
+ * and dropping an old one. This means that any indices, primary keys and
+ * sequences from serial-type columns are dropped and might need to be
+ * recreated.
+ *
+ * @param $ret
+ *   Array to which results will be added.
+ * @param $table
+ *   Name of the table, without {}
+ * @param $column
+ *   Name of the column to change
+ * @param $column_new
+ *   New name for the column (set to the same as $column if you don't want to change the name)
+ * @param $type
+ *   Type of column
+ * @param $attributes
+ *   Additional optional attributes. Recognized attributes:
+ *     not null => TRUE|FALSE
+ *     default  => NULL|FALSE|value (with or without '', it won't be added)
+ * @return
+ *   nothing, but modifies $ret parameter.
+ */
+function db_change_column(&$ret, $table, $column, $column_new, $type, $attributes = array()) {
+  if (array_key_exists('not null', $attributes) and $attributes['not null']) {
+    $not_null = 'NOT NULL';
+  }
+  if (array_key_exists('default', $attributes)) {
+    if (is_null($attributes['default'])) {
+      $default_val = 'NULL';
+      $default = 'default NULL';
+    }
+    elseif ($attributes['default'] === FALSE) {
+      $default = '';
+    }
+    else {
+      $default_val = "$attributes[default]";
+      $default = "default $attributes[default]";
+    }
+  }
+
+  $ret[] = update_sql("ALTER TABLE {". $table ."} RENAME $column TO ". $column ."_old");
+  $ret[] = update_sql("ALTER TABLE {". $table ."} ADD $column_new $type");
+  $ret[] = update_sql("UPDATE {". $table ."} SET $column_new = ". $column ."_old");
+  if ($default) { $ret[] = update_sql("ALTER TABLE {". $table ."} ALTER $column_new SET $default"); }
+  if ($not_null) { $ret[] = update_sql("ALTER TABLE {". $table ."} ALTER $column_new SET NOT NULL"); }
+  $ret[] = update_sql("ALTER TABLE {". $table ."} DROP ". $column ."_old");
+}
+
+
+/**
+ * Disable anything in the {system} table that is not compatible with the
+ * current version of Drupal core.
+ */
+function update_fix_compatibility() {
+  $ret = array();
+  $incompatible = array();
+  $query = db_query("SELECT name, type, status FROM {system} WHERE status = 1 AND type IN ('module','theme')");
+  while ($result = db_fetch_object($query)) {
+    if (update_check_incompatibility($result->name, $result->type)) {
+      $incompatible[] = $result->name;
+    }
+  }
+  if (!empty($incompatible)) {
+    $ret[] = update_sql("UPDATE {system} SET status = 0 WHERE name IN ('". implode("','", $incompatible) ."')");
+  }
+  return $ret;
+}
+
+/**
+ * Helper function to test compatibility of a module or theme.
+ */
+function update_check_incompatibility($name, $type = 'module') {
+  static $themes, $modules;
+
+  // Store values of expensive functions for future use.
+  if (empty($themes) || empty($modules)) {
+    $themes = _system_theme_data();
+    $modules = module_rebuild_cache();
+  }
+
+  if ($type == 'module' && isset($modules[$name])) {
+    $file = $modules[$name];
+  }
+  else if ($type == 'theme' && isset($themes[$name])) {
+    $file = $themes[$name];
+  }
+  if (!isset($file)
+      || !isset($file->info['core'])
+      || $file->info['core'] != DRUPAL_CORE_COMPATIBILITY
+      || version_compare(phpversion(), $file->info['php']) < 0) {
+    return TRUE;
+  }
+  return FALSE;
+}
+
+/**
+ * Perform Drupal 5.x to 6.x updates that are required for update.php
+ * to function properly.
+ *
+ * This function runs when update.php is run the first time for 6.x,
+ * even before updates are selected or performed.  It is important
+ * that if updates are not ultimately performed that no changes are
+ * made which make it impossible to continue using the prior version.
+ * Just adding columns is safe.  However, renaming the
+ * system.description column to owner is not.  Therefore, we add the
+ * system.owner column and leave it to system_update_6008() to copy
+ * the data from description and remove description. The same for
+ * renaming locales_target.locale to locales_target.language, which
+ * will be finished by locale_update_6002().
+ */
+function update_fix_d6_requirements() {
+  $ret = array();
+
+  if (drupal_get_installed_schema_version('system') < 6000 && !variable_get('update_d6_requirements', FALSE)) {
+    $spec = array('type' => 'int', 'size' => 'small', 'default' => 0, 'not null' => TRUE);
+    db_add_field($ret, 'cache', 'serialized', $spec);
+    db_add_field($ret, 'cache_filter', 'serialized', $spec);
+    db_add_field($ret, 'cache_page', 'serialized', $spec);
+    db_add_field($ret, 'cache_menu', 'serialized', $spec);
+
+    db_add_field($ret, 'system', 'info', array('type' => 'text'));
+    db_add_field($ret, 'system', 'owner', array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''));
+    if (db_table_exists('locales_target')) {
+      db_add_field($ret, 'locales_target', 'language', array('type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => ''));
+    }
+    if (db_table_exists('locales_source')) {
+      db_add_field($ret, 'locales_source', 'textgroup', array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => 'default'));
+      db_add_field($ret, 'locales_source', 'version', array('type' => 'varchar', 'length' => 20, 'not null' => TRUE, 'default' => 'none'));
+    }
+    variable_set('update_d6_requirements', TRUE);
+
+    // Create the cache_block table. See system_update_6027() for more details.
+    $schema['cache_block'] = array(
+      'fields' => array(
+        'cid'        => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
+        'data'       => array('type' => 'blob', 'not null' => FALSE, 'size' => 'big'),
+        'expire'     => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
+        'created'    => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
+        'headers'    => array('type' => 'text', 'not null' => FALSE),
+        'serialized' => array('type' => 'int', 'size' => 'small', 'not null' => TRUE, 'default' => 0)
+      ),
+      'indexes' => array('expire' => array('expire')),
+      'primary key' => array('cid'),
+    );
+    db_create_table($ret, 'cache_block', $schema['cache_block']);
+  }
+
+  return $ret;
+}
+
+/**
+ * Check update requirements and report any errors.
+ */
+function update_check_requirements() {
+  // Check the system module requirements only.
+  $requirements = module_invoke('system', 'requirements', 'update');
+  $severity = drupal_requirements_severity($requirements);
+
+  // If there are issues, report them.
+  if ($severity != REQUIREMENT_OK) {
+    foreach ($requirements as $requirement) {
+      if (isset($requirement['severity']) && $requirement['severity'] != REQUIREMENT_OK) {
+        $message = isset($requirement['description']) ? $requirement['description'] : '';
+        if (isset($requirement['value']) && $requirement['value']) {
+          $message .= ' (Currently using '. $requirement['title'] .' '. $requirement['value'] .')';
+        }
+        drupal_log($message, 'warning');
+      }
+    }
+  }
+}
+
+/**
+ * Create the batch table.
+ *
+ * This is part of the Drupal 5.x to 6.x migration.
+ */
+function update_create_batch_table() {
+
+  // If batch table exists, update is not necessary
+  if (db_table_exists('batch')) {
+    return;
+  }
+
+  $schema['batch'] = array(
+    'fields' => array(
+      'bid'       => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
+      'token'     => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE),
+      'timestamp' => array('type' => 'int', 'not null' => TRUE),
+      'batch'     => array('type' => 'text', 'not null' => FALSE, 'size' => 'big')
+    ),
+    'primary key' => array('bid'),
+    'indexes' => array('token' => array('token')),
+  );
+
+  $ret = array();
+  db_create_table($ret, 'batch', $schema['batch']);
+  return $ret;
+}
 
-ob_start();
-$_REQUEST['op'] = 'info';
-include_once("update.php");
-ob_end_clean();
 
 function update_main() {
+ // Minimum load of components.
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_CONFIGURATION);
+
+  require_once './includes/install.inc';
+  require_once './includes/file.inc';
+  require_once './modules/system/system.install';
+
+  // Load module basics.
+  include_once './includes/module.inc';
+  $module_list['system']['filename'] = 'modules/system/system.module';
+  $module_list['filter']['filename'] = 'modules/filter/filter.module';
+  module_list(TRUE, FALSE, FALSE, $module_list);
+  drupal_load('module', 'system');
+  drupal_load('module', 'filter');
+
+  // Set up $language, since the installer components require it.
+  drupal_init_language();
+
+  // Set up theme system for the maintenance page.
+  drupal_maintenance_theme();
+
+  // Check the update requirements for Drupal.
+  update_check_requirements();
+
+
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
+  drupal_maintenance_theme();
+
+  // This must happen *after* drupal_bootstrap(), since it calls
+  // variable_(get|set), which only works after a full bootstrap.
+  provision_drupal_install_log(update_create_batch_table());
+
+  // Turn error reporting back on. From now on, only fatal errors (which are
+  // not passed through the error handler) will cause a message to be printed.
+  ini_set('display_errors', TRUE);
+
+
+
   include_once './includes/install.inc';
   include_once './includes/batch.inc';
   drupal_load_updates();
@@ -54,7 +350,7 @@
       $updates = drupal_get_schema_versions($module);
       $max_version = max($updates);
       if ($version <= $max_version) {
-        drush_log(pt('Updating module @module from schema version @start to schema version @max', array('@module' => $module, '@start' => $version - 1, '@max' => $max_version)));
+        drush_log(dt('Updating module @module from schema version @start to schema version @max', array('@module' => $module, '@start' => $version - 1, '@max' => $max_version)));
         foreach ($updates as $update) {
           if ($update >= $version) {
             $operations[] = array('_update_do_one', array($module, $update));
@@ -62,7 +358,7 @@
         }
       }
       else {
-        drush_log(pt('No updates for module @module', array('@module' => $module)));
+        drush_log(dt('No updates for module @module', array('@module' => $module)));
       }
     }
     $batch = array(
@@ -78,7 +374,7 @@
     batch_process();
   }
   else {
-    drush_log(pt('No outstanding updates'));
+    drush_log(dt('No outstanding updates'));
   }
 }
 
Index: platform/drupal_7_install.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/drupal_7_install.inc,v
retrieving revision 1.6
diff -u -r1.6 drupal_7_install.inc
--- platform/drupal_7_install.inc	20 Mar 2009 16:13:25 -0000	1.6
+++ platform/drupal_7_install.inc	24 Mar 2009 06:48:45 -0000
@@ -121,7 +121,7 @@
 
 function install_main() {
   require_once './includes/bootstrap.inc';
-  drupal_bootstrap(DRUPAL_BOOTSTRAP_CONFIGURATION);
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_CONFIGURATION);
 
   // This must go after drupal_bootstrap(), which unsets globals!
   global $profile, $install_locale, $client_email, $conf, $url;
@@ -231,7 +231,7 @@
   $modules = array_diff(drupal_get_profile_modules($profile, $install_locale), array('system'));
 
   drupal_install_init_database(); 
-  drush_drupal_bootstrap_full();
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
 
   /**
    * Further installation tasks
Index: platform/drupal_deploy.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/drupal_deploy.inc,v
retrieving revision 1.4
diff -u -r1.4 drupal_deploy.inc
--- platform/drupal_deploy.inc	20 Mar 2009 16:13:25 -0000	1.4
+++ platform/drupal_deploy.inc	24 Mar 2009 06:48:45 -0000
@@ -2,7 +2,7 @@
 // $Id: drupal_deploy.inc,v 1.4 2009/03/20 16:13:25 adrian Exp $
 
 $new_url = drush_get_option('site_url');
-$old_url = drush_get_option('old_site_url');
+$old_url = drush_get_option('site_url', 'site');
 
 
 /**
Index: platform/enable.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/enable.provision.inc,v
retrieving revision 1.2
diff -u -r1.2 enable.provision.inc
--- platform/enable.provision.inc	20 Mar 2009 16:13:25 -0000	1.2
+++ platform/enable.provision.inc	24 Mar 2009 06:48:45 -0000
@@ -6,8 +6,8 @@
  * Enable a site that has been disabled
  */
 function provision_drupal_provision_enable_validate() {
-  _provision_drupal_url_required();
-  _provision_drupal_valid_installed_site();
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
+
 }
 
 function provision_drupal_post_enable() {
Index: platform/import.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/import.provision.inc,v
retrieving revision 1.4
diff -u -r1.4 import.provision.inc
--- platform/import.provision.inc	20 Mar 2009 16:13:25 -0000	1.4
+++ platform/import.provision.inc	24 Mar 2009 06:48:45 -0000
@@ -18,7 +18,7 @@
  * Import the information about the existing site, and return it in the $data context array
  */
 function provision_drupal_provision_import($url = NULL) {
-  provision_internal_init($url);
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
   provision_platform_include(dirname(__FILE__), 'import');
 }
 
Index: platform/install.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/install.provision.inc,v
retrieving revision 1.6
diff -u -r1.6 install.provision.inc
--- platform/install.provision.inc	20 Mar 2009 16:13:25 -0000	1.6
+++ platform/install.provision.inc	24 Mar 2009 06:48:46 -0000
@@ -15,8 +15,9 @@
  * Check that we are trying to install a new site , and a new site only
  */
 function provision_drupal_provision_install_validate() {
-  _provision_drupal_url_required();
-  _provision_drupal_valid_not_installed_site();
+  if (drush_get_option('installed')) {
+    drush_set_error(PROVISION_SITE_INSTALLED);
+  }
 }
 
 /**
@@ -36,8 +37,9 @@
 function provision_drupal_provision_install($url) {
  // Requires at least the database settings to complete.
   _provision_drupal_create_settings_file($url);
-  provision_internal_init($url, FALSE);
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
   provision_platform_include(dirname(__FILE__), 'install');
+  drush_set_option('installed', TRUE, 'site');
 }
 
 /**
Index: platform/migrate.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/migrate.provision.inc,v
retrieving revision 1.6
diff -u -r1.6 migrate.provision.inc
--- platform/migrate.provision.inc	20 Mar 2009 16:13:25 -0000	1.6
+++ platform/migrate.provision.inc	24 Mar 2009 06:48:46 -0000
@@ -24,8 +24,7 @@
  * Make sure we have a valid site being migrated, and that the file being migrated from exists
  */
 function provision_drupal_provision_migrate_validate($url = null, $platform = null) {
-  _provision_drupal_url_required();
-  _provision_drupal_valid_installed_site();
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
 }
 
 /**
Index: platform/provision_drupal.drush.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/provision_drupal.drush.inc,v
retrieving revision 1.13
diff -u -r1.13 provision_drupal.drush.inc
--- platform/provision_drupal.drush.inc	20 Mar 2009 16:13:25 -0000	1.13
+++ platform/provision_drupal.drush.inc	24 Mar 2009 06:48:49 -0000
@@ -47,10 +47,16 @@
  * for populating the $data context array
  */
 function provision_drupal_provision_init($url = NULL) {
+
   if ($url) {
-    drush_set_option('site_url', $url);
-    provision_get_site_data($url); // load the existing site's context into the system.
+    drush_set_option('uri' , 'http://' . $url);
+    provision_load_site_data($url);
+    drush_set_default('site_url', $url);
+    drush_set_default('profile', 'default');
+    drush_set_default('language', 'en');
+    drush_set_default('aliases', array());
   }
+
   define('PROVISION_CONTEXT_SITE', ($url) ? TRUE : FALSE);
   define('PROVISION_CONTEXT_PLATFORM', !PROVISION_CONTEXT_SITE);
 }
@@ -63,9 +69,11 @@
  * files for future runs.
  */
 function provision_drupal_provision_finalize($url = NULL) {
+
   if (PROVISION_CONTEXT_SITE) {
     if (drush_get_option('installed')) {
       drush_set_option('site_url', drush_get_option('site_url'), 'site');
+      drush_set_option('site_id', drush_get_option('site_id'), 'site');
       provision_save_site_data($url);
     }
   }
@@ -244,7 +252,8 @@
  */
 function _provision_drupal_rebuild_caches($url = NULL) {
   if (PROVISION_CONTEXT_SITE) {
-    provision_internal_init($url);
+    #drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
+
     provision_platform_include(dirname(__FILE__), 'clear');
   }
 }
@@ -366,11 +375,15 @@
 }
 
 function provision_drupal_install_log($ret) {
-  foreach ($ret as $info) {
-    if (!$info['success']) {
-      drush_set_error(PROVISION_DRUPAL_INSTALL_FAILED);
+  if (sizeof($ret)) {
+    foreach ($ret as $info) {
+      if (is_array($info)) {
+        if (!$info['success']) {
+          drush_set_error(PROVISION_DRUPAL_INSTALL_FAILED, $msg);
+        }
+        drush_log($info['query'], ($info['success']) ? 'success' : 'error');
+      }
     }
-    drush_log($info['query'], ($info['success']) ? 'success' : 'error');
   }
 }
 
Index: platform/restore.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/restore.provision.inc,v
retrieving revision 1.5
diff -u -r1.5 restore.provision.inc
--- platform/restore.provision.inc	20 Mar 2009 16:13:25 -0000	1.5
+++ platform/restore.provision.inc	24 Mar 2009 06:48:50 -0000
@@ -24,8 +24,7 @@
  * Make sure we have a valid site being restored, and that the file being restored from exists
  */
 function provision_drupal_provision_restore_validate($url = null, $restore_file = null) {
-  _provision_drupal_url_required();
-  _provision_drupal_valid_installed_site();
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
 
   $exists = provision_path("exists", $restore_file, TRUE,
       dt("Restoring site from @path"),
Index: platform/update.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/update.provision.inc,v
retrieving revision 1.6
diff -u -r1.6 update.provision.inc
--- platform/update.provision.inc	20 Mar 2009 16:13:25 -0000	1.6
+++ platform/update.provision.inc	24 Mar 2009 06:48:50 -0000
@@ -1,13 +1,12 @@
 <?php
 
 function provision_drupal_provision_update_validate() {
-  _provision_drupal_url_required;
-  _provision_drupal_valid_installed_site();
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
 }
 
 function provision_drupal_provision_update($url) {
   _provision_drupal_create_settings_file($url);
-  provision_internal_init($url, false);
+  drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_SITE);
   provision_platform_include(dirname(__FILE__), 'update');
   provision_platform_include(dirname(__FILE__), 'clear');
 }
Index: platform/verify.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/platform/verify.provision.inc,v
retrieving revision 1.7
diff -u -r1.7 verify.provision.inc
--- platform/verify.provision.inc	20 Mar 2009 16:13:25 -0000	1.7
+++ platform/verify.provision.inc	24 Mar 2009 06:48:51 -0000
@@ -5,7 +5,11 @@
  *
  * Disable an enabled and installed site
  */
-function provision_drupal_provision_verify_validate() {
+function provision_drupal_provision_verify_validate($url = null) {
+  if ($url) {
+    drush_bootstrap(DRUSH_BOOTSTRAP_DRUPAL_FULL);
+  }
+
   // This will not have an effect if you are running it on a platform, just tests that if a site is provided it is an existing one
   _provision_drupal_valid_site();
 }
@@ -21,12 +25,11 @@
     provision_path("writable", drush_get_option('sites_path'), TRUE, dt("Drupal sites directory is writable by the provisioning script"),
       dt("Drupal sites directory is not writable by the provisioning script"), PROVISION_SITES_DIR_NOT_WRITABLE);
 
-    drush_set_option('sites', array_keys((array) provision_drupal_find_sites()), 'platform'); 
-    drush_set_option('platform', array('short_name' => 'drupal', 'version' => drush_drupal_version()), 'platform'); 
-    print_r(_drush_get_context());
+    drush_set_option('sites', array_keys((array) provision_drupal_find_sites()), 'drupal'); 
+    drush_set_option('platform', array('short_name' => 'drupal', 'version' => drush_drupal_version())); 
     drush_log(dt("This platform is running @short_name @version", 
       array('@short_name' => 'drupal', '@version' => VERSION)));
-    drush_set_option('profiles', _scrub_object(_provision_find_profiles()), 'platform');
+    drush_set_option('profiles', _scrub_object(_provision_find_profiles()), 'drupal');
 
   }
   else {
@@ -35,7 +38,7 @@
     _provision_drupal_maintain_aliases($url);
     // Requires at least the database settings to complete.
    _provision_drupal_create_settings_file($url);
-    provision_internal_init($url);
+
     provision_platform_include(dirname(__FILE__), 'verify');
   }
   #if (is_array($data['modules'])) {
Index: web_server/provision_apache.drush.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/web_server/provision_apache.drush.inc,v
retrieving revision 1.6
diff -u -r1.6 provision_apache.drush.inc
--- web_server/provision_apache.drush.inc	20 Mar 2009 16:13:25 -0000	1.6
+++ web_server/provision_apache.drush.inc	24 Mar 2009 06:48:51 -0000
@@ -11,6 +11,42 @@
  * to ensure that the sites are getting loaded up correctly.
  */
 
+function provision_apache_provision_init() {
+  // Set up defines for platform
+  $docroot = drush_get_option(array("r", "root"), $_SERVER['PWD']);
+
+  $path = drush_set_default('docroot_path', rtrim(($docroot) ? $docroot : $_SERVER['DOCUMENT_ROOT'], '/'));
+  drush_set_default('sites_path', $path . '/sites');
+  drush_set_default('publish_path', drush_get_option('docroot_path'));
+
+  $parts = explode("/", $path);
+  array_pop($parts);
+  $parent_path = drush_set_default('parent_path', implode("/" , $parts));
+
+
+  drush_set_default('backup_path', $parent_path . '/backups');
+  drush_set_default('config_path', $parent_path . '/config');
+
+  $config_path = drush_get_option('config_path');
+  drush_set_default('vhost_path', $config_path . '/vhost.d');
+
+  // Commands
+  drush_set_default('restart_cmd', _provision_default_restart_cmd());
+
+  // System account
+  drush_set_default('web_group', _provision_default_web_group());
+  drush_set_default('script_user', get_current_user());
+
+  // Redirection urls
+  drush_set_default('master_url', $GLOBALS['base_url']);
+  $master_url = drush_get_option('master_url');
+  drush_set_default('web_disable_url', $master_url .'/provision/disabled');
+  drush_set_default('web_maintenence_url', $master_url .'/provision/maintenance');
+
+  drush_set_default('web_ip', '127.0.0.1');
+  drush_set_default('web_port', 80); 
+}
+
 /**
  * The default template provided for the virtual host configuration
  */
Index: web_server/verify.provision.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/provision/web_server/verify.provision.inc,v
retrieving revision 1.4
diff -u -r1.4 verify.provision.inc
--- web_server/verify.provision.inc	20 Mar 2009 16:13:25 -0000	1.4
+++ web_server/verify.provision.inc	24 Mar 2009 06:48:52 -0000
@@ -12,13 +12,13 @@
 
 function provision_apache_provision_post_verify($url) {
   if (PROVISION_CONTEXT_PLATFORM) {
-    drush_set_option('master_url', drush_get_option('master_url'), 'platform');
-    drush_set_option('publish_path', drush_get_option('publish_path'), 'platform');
-    drush_set_option('web_host', drush_get_option('web_host', '127.0.0.1'), 'platform');
-    drush_set_option('web_group', drush_get_option('web_group'), 'platform');
-    drush_set_option('script_user', drush_get_option('script_user'), 'platform');
-    drush_set_option('restart_cmd', drush_get_option('restart_cmd'), 'platform');
-    drush_set_option('backup_path', drush_get_option('backup_path'), 'platform');
-    drush_set_option('config_path', drush_get_option('config_path'), 'platform');
+    drush_set_option('master_url', drush_get_option('master_url'), 'drupal');
+    drush_set_option('publish_path', drush_get_option('publish_path'), 'drupal');
+    drush_set_option('web_host', drush_get_option('web_host', '127.0.0.1'), 'drupal');
+    drush_set_option('web_group', drush_get_option('web_group'), 'drupal');
+    drush_set_option('script_user', drush_get_option('script_user'), 'drupal');
+    drush_set_option('restart_cmd', drush_get_option('restart_cmd'), 'drupal');
+    drush_set_option('backup_path', drush_get_option('backup_path'), 'drupal');
+    drush_set_option('config_path', drush_get_option('config_path'), 'drupal');
   }
 }
