Author: XE Developers (developers@xpressengine.com)
 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());
 }