public function testUpdateWithDeletion() { TestConfigCleaner::removeExtFile(); copy(__DIR__ . '/../../data/more-extensions.php', __DIR__ . '/../../testapp/config/extensions.php'); ExtensionFileWriter::updateConfig(); $a = $this->checkFile(); $this->assertEquals(4, count($a)); }
/** * Updates config. * Calculates differences between @vengor/composer/installed.json and ExtensionsManager::$extensionsStorage * and writes new ExtensionsManager::$extensionsStorage * */ public function actionUpdateConfig() { $result = (int) (ExtensionFileWriter::updateConfig() !== true); if ($result === 0) { $this->stdout('Update OK' . PHP_EOL, Console::FG_GREEN); } else { $this->stderr('Error updating extensions storage: ', Console::FG_RED); $this->stderr(ExtensionsManager::module()->extensionsStorage . PHP_EOL); } return $result; }
/** * @param DeferredQueueCompleteEvent $event */ public static function handleEvent($event) { //else we have unfinished task if ($event->queue->exit_code != 0) { return; } /** @var DeferredGroup $group */ if (null === ($group = DeferredGroup::loadModel($event->queue->deferred_group_id))) { return; } switch ($group->name) { case ExtensionsManager::COMPOSER_INSTALL_DEFERRED_GROUP: case ExtensionsManager::COMPOSER_UNINSTALL_DEFERRED_GROUP: ExtensionFileWriter::updateConfig(); break; default: return; } }
/** * Returns Extension[] or one Extension array by package name found in self::$extensionsStorage. * * @param string $packageName * @param bool $ignoreCache * @return Extension|models\Extension[] */ public function getExtensions($packageName = '', $ignoreCache = false) { if (count($this->_extensions) === 0 || true === $ignoreCache) { $fileName = Yii::getAlias($this->extensionsStorage); $canLoad = false; if (true === file_exists($fileName) && true === is_readable($fileName)) { $canLoad = true; } else { $canLoad = ExtensionFileWriter::generateConfig(); } if (true === $canLoad) { $this->_extensions = (include $fileName); } else { Yii::$app->session->setFlash('error', Yii::t('extensions-manager', 'Unable to create extensions file')); } } if (false === empty($packageName)) { return isset($this->_extensions[$packageName]) ? $this->_extensions[$packageName] : []; } return $this->_extensions; }