public function testScanDirectoryInvalidPluginFile() { $dir = __DIR__ . '/invalid_plugins'; $reader = $this->getReaderMock($dir); $scanner = new PluginScanner($reader, $dir); $pluginsInfos = $scanner->scanDirectory(); $this->assertEmpty($pluginsInfos); }
/** * 현재 다운로드 되어 있는 플러그인 중에 require되어 있거나 vendor가 있는 플러그인을 제외한 플러그인의 composer.json 정보를 require시킨다. * * @return $this */ public function resolvePlugins() { $requires = []; $replace = []; $dir = $this->scanner->getPluginDirectory(); foreach ($this->scanner->scanDirectory() as $plugin) { $name = array_get($plugin, 'metaData.name'); $version = array_get($plugin, 'metaData.version'); if (is_dir($dir . DIRECTORY_SEPARATOR . $plugin['id'] . DIRECTORY_SEPARATOR . 'vendor')) { $replace[$name] = '*'; continue; } $requires[$name] = $version; } array_set($this->data, 'require', $requires); array_set($this->data, 'replace', $replace); return $this; }
/** * 현재 설치된 플러그인들의 정보를 조회하여 반영한다. * * @return $this */ public function reset() { // initialize $requires = []; $replace = []; array_set($this->data, 'repositories', [['type' => 'composer', 'url' => $this->packagistUrl]]); $dir = $this->scanner->getPluginDirectory(); $operation = '>='; foreach ($this->scanner->scanDirectory() as $plugin) { $name = array_get($plugin, 'metaData.name'); $version = array_get($plugin, 'metaData.version'); if (is_dir($dir . DIRECTORY_SEPARATOR . $plugin['id'] . DIRECTORY_SEPARATOR . 'vendor')) { $replace[$name] = '*'; continue; } $requires[$name] = $operation . $version; } array_set($this->data, 'require', $requires); array_set($this->data, 'replace', $replace); // set fix mode $this->setFixMode(); return $this; }
/** * 플러그인 디렉토리를 스캔하여 플러그인 정보를 새로 갱신한다. * * @return void */ protected function refresh() { $pluginData = $this->scanner->scanDirectory(); $this->plugins = $this->resolvePlugins($pluginData); $this->cache->setPluginsToCache($this->toArray()); }