Example #1
0
 /**
  * @param string $defaultModuleID
  */
 public static function processCommandOptions($defaultModuleID = null)
 {
     $arCommandOptions = getopt('bfhm:', array('module:', 'help', 'build', 'full', 'iblock-cml::', 'iblock-form-settings::', 'replace-cmp-params::', 'raw-lang-check', 'make-release', 'build-release::', 'make-update::', 'build-update::', 'install::', 'uninstall::'));
     if (empty($arCommandOptions)) {
         $arCommandOptions['h'] = false;
     }
     if (array_key_exists('h', $arCommandOptions)) {
         echo self::cliGetPrintHelp(false);
         return;
     }
     if (array_key_exists('help', $arCommandOptions)) {
         echo self::cliGetPrintHelp(true);
         return;
     }
     /** @var self $ModuleBuilder */
     $ModuleBuilder = null;
     if (array_key_exists('m', $arCommandOptions)) {
         $arCommandOptions['module'] = $arCommandOptions['m'];
     }
     if (array_key_exists('module', $arCommandOptions)) {
         $arCommandOptions['module'] = trim($arCommandOptions['module']);
         $ModuleBuilder = new self($arCommandOptions['module']);
     } elseif ($defaultModuleID !== null) {
         $defaultModuleID = trim($defaultModuleID);
         $ModuleBuilder = new self($defaultModuleID);
     } else {
         echo 'Ошибка: Не указан целевой модуль' . "\n";
         die;
     }
     if (array_key_exists('full', $arCommandOptions) || array_key_exists('f', $arCommandOptions)) {
         $arCommandOptions['build'] = false;
         $arCommandOptions['iblock-cml'] = false;
         $arCommandOptions['iblock-form-settings'] = false;
     }
     if (array_key_exists('build', $arCommandOptions) || array_key_exists('b', $arCommandOptions)) {
         $ModuleBuilder->backInstallResources();
         $ModuleBuilder->findResourcesFiles();
         $ModuleBuilder->generateInstallCode();
         $ModuleBuilder->generateUnInstallCode();
         $ModuleBuilder->generateBackInstallCode();
         $ModuleBuilder->replaceComponentParameters();
     }
     if (array_key_exists('iblock-cml', $arCommandOptions)) {
         $arCommandOptions['iblock-cml'] = trim($arCommandOptions['iblock-cml']);
         if (strlen($arCommandOptions['iblock-cml']) > 0) {
             $arBuildXML4IBlocks = explode(',', $arCommandOptions['iblock-cml']);
             foreach ($arBuildXML4IBlocks as $iblockCode) {
                 $ModuleBuilder->exportIBlockCML($iblockCode);
             }
         } else {
             $ModuleBuilder->exportIBlockCML();
         }
     }
     if (array_key_exists('iblock-form-settings', $arCommandOptions)) {
         $arCommandOptions['iblock-form-settings'] = trim($arCommandOptions['iblock-form-settings']);
         if (strlen($arCommandOptions['iblock-form-settings']) > 0) {
             $arBuildIBFormSettings = explode(',', $arCommandOptions['iblock-form-settings']);
             foreach ($arBuildIBFormSettings as $iblockCode) {
                 $ModuleBuilder->exportIBlockFormSettings($iblockCode);
             }
         } else {
             $ModuleBuilder->exportIBlockFormSettings();
         }
     }
     if (array_key_exists('replace-cmp-params', $arCommandOptions)) {
         $arCommandOptions['replace-cmp-params'] = trim($arCommandOptions['replace-cmp-params']);
         if (strlen($arCommandOptions['replace-cmp-params']) > 0) {
             $ModuleBuilder->replaceComponentParameters($arCommandOptions['replace-cmp-params']);
         } else {
             $ModuleBuilder->replaceComponentParameters();
         }
     }
     if (array_key_exists('raw-lang-check', $arCommandOptions)) {
         $rawLangCheckResult = $ModuleBuilder->getModuleRawLangText();
         if (strlen($rawLangCheckResult) > 0) {
             echo 'Найдены файлы в которых языковый текст не перемещен в LANG-файлы:' . "\n" . $rawLangCheckResult . "\n";
         }
     }
     if (array_key_exists('make-release', $arCommandOptions)) {
         $ModuleBuilder->makeRelease();
     }
     if (array_key_exists('make-update', $arCommandOptions)) {
         $versionFrom = null;
         $versionTo = null;
         $arCommandOptions['make-update'] = trim($arCommandOptions['make-update']);
         if (strlen($arCommandOptions['make-update']) > 0) {
             list($versionFrom, $versionTo) = explode('+', $arCommandOptions['make-update']);
             $versionFrom = trim($versionFrom);
             $versionTo = trim($versionTo);
         }
         $ModuleBuilder->makeUpdate($versionFrom, $versionTo);
     }
     if (array_key_exists('build-release', $arCommandOptions)) {
         $releaseVersion = null;
         $arCommandOptions['build-release'] = trim($arCommandOptions['build-release']);
         if (strlen($arCommandOptions['build-release']) > 0) {
             $releaseVersion = $arCommandOptions['build-release'];
         }
         $ModuleBuilder->buildRelease($releaseVersion);
     }
     if (array_key_exists('build-update', $arCommandOptions)) {
         $versionTo = null;
         $arCommandOptions['build-update'] = trim($arCommandOptions['build-update']);
         if (strlen($arCommandOptions['build-update']) > 0) {
             $versionTo = $arCommandOptions['build-update'];
         }
         $ModuleBuilder->buildUpdate($versionTo);
     }
     if (array_key_exists('install', $arCommandOptions)) {
         $ModuleInstaller = $ModuleBuilder->getCModuleObject();
         $arCommandOptions['install'] = trim($arCommandOptions['install']);
         if ($arCommandOptions['install'] == 'files') {
             $ModuleBuilder->installResources();
         } elseif ($arCommandOptions['install'] == 'module-files') {
             $ModuleBuilder->getCModuleObject()->InstallFiles();
         } elseif ($arCommandOptions['install'] == 'module') {
             echo 'Установка модуля: "' . $ModuleBuilder->_moduleName . '"...' . "\n";
             echo "\t" . 'Установка базы данных...';
             $ModuleInstaller->InstallDB();
             echo "OK\n";
             echo "\t" . 'Установка файлов...';
             $ModuleBuilder->installResources();
             echo "OK\n";
             echo "\t" . 'Установка событий...';
             $ModuleInstaller->InstallEvents();
             echo "OK\n";
             echo "\t" . 'Установка задач...';
             $ModuleInstaller->InstallTasks();
             echo "OK\n";
             if (method_exists($ModuleInstaller, 'InstallData')) {
                 echo "\n" . 'Установка исходных данных и настроек модуля...';
                 $ModuleInstaller->InstallData();
                 echo "OK\n";
             }
             echo "\t" . 'Регистрация модуля в системе...';
             $ModuleBuilder->registerModule();
             echo "OK\n";
             echo "Готово.\n";
         } elseif ($arCommandOptions['install'] == 'events') {
             echo 'Установка событий модуля "' . $ModuleBuilder->getModuleName() . '"...';
             $ModuleInstaller->InstallEvents();
             echo "OK\n";
         } elseif ($arCommandOptions['install'] == 'tasks') {
             echo 'Установка задач модуля "' . $ModuleBuilder->getModuleName() . '"...';
             $ModuleInstaller->InstallTasks();
             echo "OK\n";
         } elseif ($arCommandOptions['install'] == 'database') {
             echo 'Установка базы данных модуля "' . $ModuleBuilder->getModuleName() . '"...';
             $ModuleInstaller->InstallDB();
             echo "OK\n";
         } elseif ($arCommandOptions['install'] == 'data') {
             if (method_exists($ModuleInstaller, 'InstallData')) {
                 echo 'Установка исходных данных и настроек модуля "' . $ModuleBuilder->getModuleName() . '"...';
                 $ModuleInstaller->InstallData();
                 echo "OK\n";
             } else {
                 echo 'Предупреждение: Невозможно установить данные модуля. "' . $ModuleBuilder->getModuleName() . '".' . ' Соответствующий метод отсутствует в установщике модуля' . "\n";
             }
         } elseif ($arCommandOptions['install'] == 'register') {
             echo 'Регистрация в системе модуля ' . $ModuleBuilder->getModuleName() . '"...';
             $ModuleBuilder->registerModule();
             echo "OK\n";
         }
     }
     if (array_key_exists('uninstall', $arCommandOptions)) {
         $ModuleInstaller = $ModuleBuilder->getCModuleObject();
         $arCommandOptions['uninstall'] = trim($arCommandOptions['uninstall']);
         if ($arCommandOptions['uninstall'] == 'files') {
             $ModuleBuilder->installResources();
         } elseif ($arCommandOptions['uninstall'] == 'module-files') {
             $ModuleBuilder->getCModuleObject()->InstallFiles();
         } elseif ($arCommandOptions['uninstall'] == 'module') {
             if (method_exists($ModuleInstaller, 'UnInstallData')) {
                 echo "\n" . 'Удаление исходных данных и настроек модуля...';
                 $ModuleInstaller->UnInstallData();
                 echo "OK\n";
             }
             echo "\t" . 'Удаление задач...';
             $ModuleInstaller->UnInstallTasks();
             echo "OK\n";
             echo "\t" . 'Удаление событий';
             $ModuleInstaller->UnInstallEvents();
             echo "OK\n";
             echo "\t" . 'Удаление файлов';
             $ModuleBuilder->installResources();
             echo "OK\n";
             echo "\t" . 'Удаление базы данных';
             $ModuleInstaller->UnInstallDB();
             echo "OK\n";
             echo "\t" . 'Удаление записи о регистрации модуля';
             $ModuleBuilder->unRegisterModule();
             echo "OK\n";
         } elseif ($arCommandOptions['uninstall'] == 'events') {
             echo 'Удаление событий модуля "' . $ModuleBuilder->getModuleName() . '"...';
             $ModuleInstaller->UnInstallEvents();
             echo "OK\n";
         } elseif ($arCommandOptions['uninstall'] == 'tasks') {
             echo 'Удаление задач модуля "' . $ModuleBuilder->getModuleName() . '"...';
             $ModuleInstaller->UnInstallTasks();
             echo "OK\n";
         } elseif ($arCommandOptions['uninstall'] == 'database') {
             echo 'Удаление базы данных модуля "' . $ModuleBuilder->getModuleName() . '"...';
             $ModuleInstaller->UnInstallDB();
             echo "OK\n";
         } elseif ($arCommandOptions['uninstall'] == 'data') {
             if (method_exists($ModuleInstaller, 'UnInstallData')) {
                 echo 'Удаление исходных данных и настроек модуля "' . $ModuleBuilder->getModuleName() . '"...';
                 $ModuleInstaller->UnInstallData();
                 echo "OK\n";
             } else {
                 echo 'Предупреждение: Невозможно удалить данные модуля "' . $ModuleBuilder->getModuleName() . '".' . ' Соответствующий метод отсутствует в установщике модуля' . "\n";
             }
         } elseif ($arCommandOptions['uninstall'] == 'register') {
             echo 'Удаление записи регистрации в системе модуля "' . $ModuleBuilder->getModuleName() . '"...';
             $ModuleBuilder->unRegisterModule();
             echo "OK\n";
         }
     }
 }