/** * Returns the composer manifest constraints ("require", "suggest" or "conflict") from the given package meta data * * @param string $constraintType one of the MetaDataInterface::CONSTRAINT_TYPE_* constants * @param MetaData $packageMetaData * @return array in the format array('<ComposerPackageName>' => '*', ...) * @deprecated This will be removed with Flow 4.0 together with the MetaData model */ protected function getComposerManifestConstraints($constraintType, MetaData $packageMetaData) { $composerManifestConstraints = []; $constraints = $packageMetaData->getConstraintsByType($constraintType); foreach ($constraints as $constraint) { if (!$constraint instanceof MetaData\PackageConstraint) { continue; } $composerName = isset($this->packageStatesConfiguration['packages'][$constraint->getValue()]['composerName']) ? $this->packageStatesConfiguration['packages'][$constraint->getValue()]['composerName'] : ComposerUtility::getComposerPackageNameFromPackageKey($constraint->getValue()); $composerManifestConstraints[$composerName] = '*'; } return $composerManifestConstraints; }
/** * Write a composer manifest for the package. * * @param string $manifestPath * @param string $packageKey * @param MetaData $packageMetaData * @return void */ protected function writeComposerManifest($manifestPath, $packageKey, \TYPO3\Flow\Package\MetaData $packageMetaData = NULL) { $manifest = array(); $nameParts = explode('.', $packageKey); $vendor = array_shift($nameParts); $manifest['name'] = strtolower($vendor . '/' . implode('-', $nameParts)); if ($packageMetaData !== NULL) { $manifest['type'] = $packageMetaData->getPackageType(); $manifest['description'] = $packageMetaData->getDescription() ?: 'Add description here'; if ($packageMetaData->getVersion()) { $manifest['version'] = $packageMetaData->getVersion(); } $manifest['require'] = array(); $dependencies = $packageMetaData->getConstraintsByType(MetaDataInterface::CONSTRAINT_TYPE_DEPENDS); foreach ($dependencies as $dependencyConstraint) { if ($dependencyConstraint instanceof \TYPO3\Flow\Package\MetaData\PackageConstraint) { if (isset($this->packageStatesConfiguration['packages'][$dependencyConstraint->getValue()]['composerName'])) { $manifest['require'][$this->packageStatesConfiguration['packages'][$dependencyConstraint->getValue()]['composerName']] = '*'; } } } } else { $manifest['type'] = 'typo3-flow-package'; $manifest['description'] = ''; } if (!isset($manifest['require']) || empty($manifest['require'])) { $manifest['require'] = array('typo3/flow' => '*'); } $manifest['autoload'] = array('psr-0' => array(str_replace('.', '\\', $packageKey) => 'Classes')); if (defined('JSON_PRETTY_PRINT')) { file_put_contents(Files::concatenatePaths(array($manifestPath, 'composer.json')), json_encode($manifest, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)); } else { file_put_contents(Files::concatenatePaths(array($manifestPath, 'composer.json')), json_encode($manifest)); } }