InventoryModuleDeployment.php 1.51 KB
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\InventoryComposerInstaller;

use Composer\Package\Package;
use Composer\IO\IOInterface;

class InventoryModuleDeployment
{
    private $configurator;
    private $io;

    public function __construct
    (
        InventoryConfiguratorInterface $configurator,
        IOInterface $io
    ) {
        $this->configurator = $configurator;
        $this->io = $io;
    }

    public function deploy(Package $package): void
    {
        if ($package->getType() !== 'magento2-module') {
            return;
        }

        $packageName = $package->getName();
        if (0 !== strpos($packageName,'magento/module-inventory')) {
            return;
        }

        $moduleName = $this->packageNameToModuleName($packageName);
        $this->io->writeError(sprintf(
            '    ...Module %s recognized as part of Magento Multi Source Inventory implementation',
            $moduleName
        ), true);

        $this->configurator->configure($moduleName);
    }

    private function packageNameToModuleName(string $packageName): string
    {
        $nameWithDashes = substr($packageName, strlen('magento/module-'));
        $nameInCamelCase = ucwords($nameWithDashes, '-');
        $nameWithoutDashes = str_replace('-', '', $nameInCamelCase);
        $nameWithVendorPrefix = 'Magento_' . $nameWithoutDashes;
        $packageName = $nameWithVendorPrefix;
        return $packageName;
    }
}