function _drush_features_export in Features 7.2
Same name and namespace in other branches
- 6 features.drush.inc \_drush_features_export()
- 7 features.drush.inc \_drush_features_export()
Write a module to the site dir.
Parameters
array $info: The feature info associative array.
string|null $module_name: (optional) The name for the exported module.
string|null $directory: (optional) Destination directory for newly created module.
2 calls to _drush_features_export()
- drush_features_export in ./
features.drush.inc - Drush command callback for 'features-export'.
- drush_features_update in ./
features.drush.inc - Drush command callback for 'features-update'.
File
- ./
features.drush.inc, line 698 - Features module drush integration.
Code
function _drush_features_export($info, $module_name = NULL, $directory = NULL) {
$root = drush_get_option(array(
'r',
'root',
), drush_locate_root());
$skip_confirmation = drush_get_context('DRUSH_AFFIRMATIVE');
if ($root) {
$destination = drush_get_option(array(
'destination',
), variable_get('features_default_export_path', FEATURES_DEFAULT_EXPORT_PATH));
$directory = isset($directory) ? $directory : $destination . '/' . $module_name;
if (is_dir($directory)) {
// If we aren't skipping confirmation and the directory already exists,
// prompt the user. This message most make sense for but fe and fu.
if (!$skip_confirmation && !drush_confirm(dt('Module located at !dir will be updated. Do you want to continue?', array(
'!dir' => $directory,
)))) {
drush_die('Aborting.');
}
}
else {
drush_op('mkdir', $directory);
}
if (is_dir($directory)) {
// Ensure that the export will be created in the English language.
// The export language must be set before flushing caches as that can
// result into translatables being statically cached.
$language = _features_export_language();
drupal_flush_all_caches();
$export = _drush_features_generate_export($info, $module_name);
$files = features_export_render($export, $module_name, TRUE);
// Restore the language.
_features_export_language($language);
// Copy any files if _files key is there.
if (!empty($files['_files'])) {
foreach ($files['_files'] as $file_name => $file_info) {
// See if files are in a sub directory.
if (strpos($file_name, '/')) {
$file_directory = $directory . '/' . substr($file_name, 0, strrpos($file_name, '/'));
if (!is_dir($file_directory)) {
drush_op('mkdir', $file_directory);
}
}
if (!empty($file_info['file_path'])) {
drush_op('file_unmanaged_copy', $file_info['file_path'], "{$directory}/{$file_name}", FILE_EXISTS_REPLACE);
}
elseif (!empty($file_info['file_content'])) {
drush_op('file_put_contents', "{$directory}/{$file_name}", $file_info['file_content']);
}
else {
drush_log(dt("Entry for @file_name.in !module is invalid. ", array(
'!module' => $module_name,
'@file_name' => $file_name,
)), 'ok');
}
}
unset($files['_files']);
}
foreach ($files as $extension => $file_contents) {
if (!in_array($extension, array(
'module',
'info',
))) {
$extension .= '.inc';
}
drush_op('file_put_contents', "{$directory}/{$module_name}.{$extension}", $file_contents);
}
drush_log(dt("Created module: !module in !directory", array(
'!module' => $module_name,
'!directory' => $directory,
)), 'ok');
}
else {
drush_die(dt('Couldn\'t create directory !directory', array(
'!directory' => $directory,
)));
}
}
else {
drush_die(dt('Couldn\'t locate site root'));
}
}