Skip to content

Commit

Permalink
Fix loading of plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
mitelg committed Jul 14, 2021
1 parent 5ae94c0 commit 9ba603c
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 39 deletions.
3 changes: 2 additions & 1 deletion box.json.dist
Expand Up @@ -12,7 +12,8 @@
"config.yaml.dist",
"Resources/public.key",
"vendor/autoload.php",
"vendor/shopwarelabs/plugin-info/res/plugin-info-schema.json"
"vendor/shopwarelabs/plugin-info/res/plugin-info-schema.json",
"vendor/symfony/dependency-injection/Loader/schema/dic/services/services-1.0.xsd"
],
"finder": [
{
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Expand Up @@ -12,7 +12,7 @@
"symfony/process": "~4.4",
"symfony/dependency-injection": "~4.4",
"dnoegel/php-xdg-base-dir": "~0.1",
"shopwarelabs/plugin-info": "dev-master",
"shopwarelabs/plugin-info": "0.1.0",
"fzaninotto/faker": "^1.9.1",
"guzzlehttp/guzzle": "^6.5.2",
"padraic/phar-updater": "^1.0.6"
Expand Down
19 changes: 8 additions & 11 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion src/Application/DependencyInjection.php
Expand Up @@ -110,7 +110,6 @@ public static function createContainer($rootDir): ContainerBuilder
->setPublic(true);

$container->register('extension_manager', ExtensionManager::class)
->addArgument(new Reference('autoloader'))
->setPublic(true);

$container->register('command_manager', CommandManager::class)
Expand Down
31 changes: 6 additions & 25 deletions src/Application/ExtensionManager.php
Expand Up @@ -8,7 +8,6 @@

namespace ShopwareCli\Application;

use Composer\Autoload\ClassLoader;
use Symfony\Component\DependencyInjection\ContainerBuilder;

/**
Expand All @@ -32,16 +31,6 @@ class ExtensionManager
*/
protected $extensions = [];

/**
* @var ClassLoader
*/
private $autoLoader;

public function __construct(ClassLoader $autoLoader)
{
$this->autoLoader = $autoLoader;
}

/**
* Read all available plugins
*
Expand All @@ -58,7 +47,7 @@ public function discoverExtensions($extensionDirs): void
}

$vendorName = $vendorPath->getBasename();
$this->registerExtensionNamespace($vendorPath->getPathname(), "{$vendorName}\\");
$this->registerExtensionAutoloader($vendorPath->getPathname());
$this->discoverVendorFolder($vendorPath->getPathname(), $vendorName);
}
}
Expand Down Expand Up @@ -118,12 +107,9 @@ public function setExtension($name, $class): void
}

/**
* @param string $vendorPath
* @param string $vendorName
*
* @throws \RuntimeException
*/
private function discoverVendorFolder($vendorPath, $vendorName): void
private function discoverVendorFolder(string $vendorPath, string $vendorName): void
{
/** @var \DirectoryIterator $extensionPath */
foreach (new \DirectoryIterator($vendorPath) as $extensionPath) {
Expand All @@ -149,15 +135,10 @@ private function isValidExtensionDir(\DirectoryIterator $vendorPath): bool
&& \strpos($vendorPath->getBasename(), '.') !== 0; // skip dot directories e.g. .git
}

/**
* Register a namespace for given extension path
*
* @param string $path
* @param string $namespace
*/
private function registerExtensionNamespace($path, $namespace): void
private function registerExtensionAutoloader(string $path): void
{
$namespace = \rtrim($namespace, '\\') . '\\';
$this->autoLoader->addPsr4($namespace, $path);
if (\is_file($path . '/vendor/autoload.php')) {
require_once $path . '/vendor/autoload.php';
}
}
}

0 comments on commit 9ba603c

Please sign in to comment.