/** * Writes a package or profile's files to an archive. * * @param array &$return * The return value, passed by reference. * @param \Drupal\features\Package $package * The package or profile. * @param ArchiveTar $archiver * The archiver. */ protected function generatePackage(array &$return, Package $package, ArchiveTar $archiver) { $success = TRUE; foreach ($package->getFiles() as $file) { try { $this->generateFile($package->getDirectory(), $file, $archiver); } catch (\Exception $exception) { $this->failure($return, $package, $exception); $success = FALSE; break; } } if ($success) { $this->success($return, $package); } }
/** * Registers a failed package or profile write operation. * * @param array &$return * The return value, passed by reference. * @param \Drupal\features\Package $package * The package or profile. * @param \Exception $exception * The exception object. * @param string $message * Error message when there isn't an Exception object. */ protected function failure(array &$return, Package $package, \Exception $exception = NULL, $message = '') { $type = $package->getType() == 'module' ? $this->t('Package') : $this->t('Profile'); $return[] = ['success' => FALSE, 'display' => TRUE, 'message' => '@type @package not written to @directory. Error: @error.', 'variables' => ['@type' => $type, '@package' => $package->getName(), '@directory' => $package->getDirectory(), '@error' => isset($exception) ? $exception->getMessage() : $message]]; }