if (!class_exists('jCoordinator', false)) { // for old application.init.php which doesn't include init.php echo "Error: your application.init.php should include the vendor/autoload.php"; exit(1); } if (!\jServer::isCLI()) { echo "Error: you're not allowed to execute this script outside a command line shell.\n"; exit(1); } if (!\Jelix\Core\App::isInit()) { echo "Error: should run within an application\n"; exit(1); } \Jelix\Core\App::setEnv('jelix-scripts'); \Jelix\DevHelper\JelixScript::checkTempPath(); $jelixScriptConfig = \Jelix\DevHelper\JelixScript::loadConfig(); $application = new Application("Jelix helpers"); $application->add(new InstallApp($jelixScriptConfig)); $application->add(new InstallModule($jelixScriptConfig)); $application->add(new UninstallModule($jelixScriptConfig)); $application->add(new InitAdmin($jelixScriptConfig)); $application->add(new CreateCtrl($jelixScriptConfig)); $application->add(new CreateDao($jelixScriptConfig)); $application->add(new CreateDaoCrud($jelixScriptConfig)); $application->add(new CreateClassFromDao($jelixScriptConfig)); $application->add(new CreateModule($jelixScriptConfig)); $application->add(new CreateEntryPoint($jelixScriptConfig)); $application->add(new CreateForm($jelixScriptConfig)); $application->add(new CreateLangPackage($jelixScriptConfig)); $application->add(new CreateZone($jelixScriptConfig)); $application->add(new ClearTemp($jelixScriptConfig));
protected function execute(InputInterface $input, OutputInterface $output) { $appPath = $input->getArgument('path'); $appPath = Path::normalizePath($appPath, 0, getcwd()); $appName = basename($appPath); $appPath .= '/'; if (file_exists($appPath . '/jelix-app.json') || file_exists($appPath . '/project.xml')) { throw new \Exception("this application is already created"); } $this->prepareSubCommandApp($appName, $appPath); App::setEnv('jelix-scripts'); \Jelix\DevHelper\JelixScript::checkTempPath(); if ($p = $input->getOption('wwwpath')) { $wwwpath = Path::shortestPath($appPath, $p) . '/'; } else { $wwwpath = App::wwwPath(); } if ($output->isVerbose()) { $output->writeln("Create directories and files at {$appPath}"); } $param = $this->_createSkeleton($appPath, $appName, $wwwpath, $input); App::declareModulesDir(array($appPath . '/modules/')); $installer = new \Jelix\Installer\Installer(new \Jelix\Installer\Reporter\Console($output->isVerbose() ? 'notice' : 'warning')); $installer->installApplication(); $moduleok = true; if (!$input->getOption('nodefaultmodule')) { try { if ($output->isVerbose()) { $output->writeln("Create default module " . $param['modulename']); } $options = array('module' => $param['modulename'], '--addinstallzone' => true, '--noregistration' => true); if ($output->isVerbose()) { $options['-v'] = true; } $this->executeSubCommand('module:create', $options, $output); if ($output->isVerbose()) { $output->writeln("Create main template"); } $this->createFile($appPath . 'modules/' . $param['modulename'] . '/templates/main.tpl', 'module/main.tpl.tpl', $param, "Main template"); } catch (\Exception $e) { $moduleok = false; $output->writeln("<error>The module has not been created because of this error: " . $e->getMessage() . "</error>"); $output->writeln("However the application has been created"); } } if ($input->getOption('withcmdline')) { if (!$input->getOption('nodefaultmodule') && $moduleok) { if ($output->isVerbose()) { $output->writeln("Create a controller in the default module for the cli script"); } $options = array('module' => $param['modulename'], 'controller' => 'default', 'method' => 'index', '--cmdline' => true); if ($output->isVerbose()) { $options['-v'] = true; } $this->executeSubCommand('module:createctrl', $options, $output); } if ($output->isVerbose()) { $output->writeln("Create the cli script"); } $options = array('entrypoint' => $param['modulename'], '--type' => 'cmdline'); if ($output->isVerbose()) { $options['-v'] = true; } $this->executeSubCommand('app:createentrypoint', $options, $output); } }