Neos\Flow\Composer\ComposerUtility::writeComposerManifest PHP Метод

writeComposerManifest() публичный статический Метод

Write a composer manifest for the package.
public static writeComposerManifest ( string $manifestPath, string $packageKey, array $composerManifestData = [] ) : array
$manifestPath string
$packageKey string
$composerManifestData array
Результат array the manifest data written
    public static function writeComposerManifest($manifestPath, $packageKey, array $composerManifestData = [])
    {
        $manifest = ['description' => ''];
        if ($composerManifestData !== null) {
            $manifest = array_merge($manifest, $composerManifestData);
        }
        if (!isset($manifest['name']) || empty($manifest['name'])) {
            $manifest['name'] = static::getComposerPackageNameFromPackageKey($packageKey);
        }
        if (!isset($manifest['require']) || empty($manifest['require'])) {
            $manifest['require'] = array('typo3/flow' => '*');
        }
        if (!isset($manifest['autoload'])) {
            $namespace = str_replace('.', '\\', $packageKey) . '\\';
            $manifest['autoload'] = array('psr-4' => array($namespace => PackageInterface::DIRECTORY_CLASSES));
        }
        $manifest['extra']['neos']['package-key'] = $packageKey;
        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));
        }
        return $manifest;
    }

Usage Example

 /**
  * @test
  */
 public function packageStatesConfigurationContainsRelativePaths()
 {
     $packageKeys = ['RobertLemke.Flow.NothingElse' . md5(uniqid(mt_rand(), true)), 'Neos.Flow' . md5(uniqid(mt_rand(), true)), 'TYPO3.YetAnotherTestPackage' . md5(uniqid(mt_rand(), true))];
     foreach ($packageKeys as $packageKey) {
         $packagePath = 'vfs://Test/Packages/Application/' . $packageKey . '/';
         mkdir($packagePath, 0770, true);
         mkdir($packagePath . 'Classes');
         ComposerUtility::writeComposerManifest($packagePath, $packageKey, ['type' => 'flow-test', 'autoload' => []]);
     }
     $packageManager = $this->getAccessibleMock(PackageManager::class, ['updateShortcuts', 'emitPackageStatesUpdated'], [], '', false);
     $packageManager->_set('packagesBasePath', 'vfs://Test/Packages/');
     $packageManager->_set('packageStatesPathAndFilename', 'vfs://Test/Configuration/PackageStates.php');
     $packageFactory = new PackageFactory($packageManager);
     $this->inject($packageManager, 'packageFactory', $packageFactory);
     $packageManager->_set('packages', []);
     $actualPackageStatesConfiguration = $packageManager->rescanPackages();
     $expectedPackageStatesConfiguration = [];
     foreach ($packageKeys as $packageKey) {
         $composerName = ComposerUtility::getComposerPackageNameFromPackageKey($packageKey);
         $expectedPackageStatesConfiguration[$composerName] = ['state' => 'active', 'packagePath' => 'Application/' . $packageKey . '/', 'composerName' => $composerName, 'packageClassInformation' => [], 'packageKey' => $packageKey, 'autoloadConfiguration' => []];
     }
     $this->assertEquals($expectedPackageStatesConfiguration, $actualPackageStatesConfiguration['packages']);
 }
All Usage Examples Of Neos\Flow\Composer\ComposerUtility::writeComposerManifest