/** * * {@inheritDoc} * @see \axenox\PackageManager\Actions\AbstractComposerAction::perform_composer_action() */ protected function perform_composer_action(ComposerAPI $composer) { if (!$this->get_input_data_sheet()->get_meta_object()->is_exactly('axenox.PackageManager.PACKAGE_INSTALLED')) { throw new ActionRuntimeException('Wrong input object for action "' . $this->get_alias_with_namespace() . '" - "' . $this->get_input_data_sheet()->get_meta_object()->get_alias_with_namespace() . '"! This action requires input data based based on "axenox.PackageManager.PACKAGE_INSTALLED"!'); } $packages = array(); foreach ($this->get_input_data_sheet()->get_rows() as $nr => $row) { if (!isset($row['name']) || !$row['name']) { throw new ActionRuntimeException('Missing package name in row ' . $nr . ' of input data for action "' . $this->get_alias_with_namespace() . '"!'); } $packages[] = $row['name']; } return $composer->remove($packages); }