diff --git a/drush/features.drush.inc b/drush/features.drush.inc index ff1fc7c..608293c 100644 --- a/drush/features.drush.inc +++ b/drush/features.drush.inc @@ -258,27 +258,29 @@ function drush_features_list_packages($package_name = '') { /** * Drush command callback for features-import-all. * - * @return bool */ function drush_features_import_all() { _drush_features_options(); /** @var \Drupal\features\FeaturesManagerInterface $manager */ $manager = \Drupal::service('features.manager'); $packages = $manager->getPackages(); - $packages = $manager->filterPackages($packages); - $result = array(); - - foreach ($packages as $package) { - $overrides = $manager->detectOverrides($package); + $overridden = array(); - if ($package->getStatus() == FeaturesManagerInterface::STATUS_INSTALLED) { - drush_print(dt('Reverting @module...', array('@module' => $package->getName()))); - drush_features_import($package->getMachineName()); + foreach ($packages as $item) { + $overrides = $manager->detectOverrides($item); + $missing = $manager->detectMissing($item); + if ((!empty($missing) || !empty($overrides)) && ($item->getStatus() == FeaturesManagerInterface::STATUS_INSTALLED)) { + $overridden[] = $item->getMachineName(); } } - return TRUE; + if (!empty($overridden)) { + call_user_func_array('drush_features_import', $overridden); + } + else { + drush_log(dt('Current state already matches active config, aborting.'), 'ok'); + } } /**