int main(int argc, char *argv[]) { const int port = 8888; QApplication app(argc, argv); app.setApplicationName("TrikServer"); trikKernel::ApplicationInitHelper initHelper(app); if (!initHelper.parseCommandLine()) { return 0; } initHelper.init(); QLOG_INFO() << "TrikServer started on port" << port; qDebug() << "Running TrikServer on port" << port; QScopedPointer<trikControl::BrickInterface> brick(trikControl::BrickFactory::create( initHelper.configPath(), trikKernel::Paths::mediaPath())); trikKernel::Configurer configurer( initHelper.configPath() + "/system-config.xml" , initHelper.configPath() + "/model-config.xml" ); QScopedPointer<trikNetwork::MailboxInterface> mailbox(trikNetwork::MailboxFactory::create(configurer)); trikCommunicator::TrikCommunicator communicator(*brick, mailbox.data()); communicator.startServer(port); return app.exec(); }
int main(int argc, char *argv[]) { QStringList params; for (int i = 1; i < argc; ++i) { params << QString(argv[i]); } QScopedPointer<QCoreApplication> app; if (params.contains("--no-display") || params.contains("-no-display")) { app.reset(new QCoreApplication(argc, argv)); } else { app.reset(new QApplication(argc, argv)); } app->setApplicationName("TrikRun"); // RAII-style code to ensure that after brick gets destroyed there will be an event loop that cleans it up. trikKernel::DeinitializationHelper helper; Q_UNUSED(helper); trikKernel::ApplicationInitHelper initHelper(*app); initHelper.commandLineParser().addPositionalArgument("file", QObject::tr("File with script to execute") + " " + QObject::tr("(optional of -js or -py option is specified)")); initHelper.commandLineParser().addOption("js", "js-script" , QObject::tr("JavaScript script to be executed directly from command line.") + "\n\t" + QObject::tr("Example:") + " ./trikRun -js \"brick.smile(); script.wait(2000);\""); initHelper.commandLineParser().addOption("py", "py-script" , QObject::tr("Python script to be executed directly from command line.") + "\n\t" + QObject::tr("Example:") + " ./trikRun -py \"" "brick.display().showImage('media/trik_smile_normal.png'); " "script.wait(2000)\""); initHelper.commandLineParser().addFlag("no-display", "no-display" , QObject::tr("Disable display support. When this flag is active, trikRun can work without QWS or even " "physical display")); initHelper.commandLineParser().addApplicationDescription(QObject::tr("Runner of JavaScript and Python files.")); if (!initHelper.parseCommandLine()) { return 0; } initHelper.init(); QLOG_INFO() << "TrikRun started"; const auto run = [&](const QString &script, const QString &fileName, trikScriptRunner::ScriptType stype) { QScopedPointer<trikControl::BrickInterface> brick( trikControl::BrickFactory::create(initHelper.configPath(), trikKernel::Paths::mediaPath()) ); trikKernel::Configurer configurer(initHelper.configPath() + "/system-config.xml" , initHelper.configPath() + "/model-config.xml"); QScopedPointer<trikNetwork::MailboxInterface> mailbox(trikNetwork::MailboxFactory::create(configurer)); trikScriptRunner::TrikScriptRunner result(*brick, mailbox.data()); QObject::connect(&result, SIGNAL(completed(QString, int)), app.data(), SLOT(quit())); if (fileName.isEmpty()) { // from command line result.run(script, stype); } else { // from file result.run(script, fileName); } return app->exec(); }; if (initHelper.commandLineParser().isSet("js")) { return run(initHelper.commandLineParser().value("js"), "", trikScriptRunner::ScriptType::JAVASCRIPT); } else if (initHelper.commandLineParser().isSet("py")) { return run(initHelper.commandLineParser().value("py"), "", trikScriptRunner::ScriptType::PYTHON); } else { const QStringList positionalArgs = initHelper.commandLineParser().positionalArgs(); if (positionalArgs.size() == 1) { return run(trikKernel::FileUtils::readFromFile(positionalArgs[0]), positionalArgs[0], trikScriptRunner::ScriptType::JAVASCRIPT); } else { initHelper.commandLineParser().showHelp(); return 1; } } }
int main(int argc, char *argv[]) { qsrand(QDateTime::currentMSecsSinceEpoch()); QApplication app(argc, argv); QStringList args = app.arguments(); if (args.count() < 2) { printUsage(); return 1; } QString configPath = "./"; if (app.arguments().contains("-c")) { const int index = app.arguments().indexOf("-c"); if (app.arguments().count() <= index + 1) { printUsage(); return 1; } configPath = app.arguments()[index + 1]; if (configPath.right(1) != "/") { configPath += "/"; } } QString startDirPath = QDir::currentPath(); if (app.arguments().contains("-d")) { const int index = app.arguments().indexOf("-d"); if (app.arguments().count() <= index + 1) { printUsage(); return 1; } startDirPath = app.arguments()[index + 1]; } if (startDirPath.right(1) != "/") { startDirPath += "/"; } trikKernel::coreDumping::initCoreDumping(startDirPath); #ifdef Q_WS_QWS QWSServer * const server = QWSServer::instance(); if (server) { server->setCursorVisible(false); } #endif trikKernel::LoggingHelper loggingHelper(startDirPath); Q_UNUSED(loggingHelper); QLOG_INFO() << "TrikRun started"; QScopedPointer<trikControl::BrickInterface> brick(trikControl::BrickFactory::create(configPath, startDirPath)); trikKernel::Configurer configurer(configPath + "/system-config.xml", configPath + "/model-config.xml"); QScopedPointer<trikNetwork::GamepadInterface> gamepad(trikNetwork::GamepadFactory::create(configurer)); QScopedPointer<trikNetwork::MailboxInterface> mailbox(trikNetwork::MailboxFactory::create(configurer)); trikScriptRunner::TrikScriptRunner runner(*brick, mailbox.data(), gamepad.data(), startDirPath); QObject::connect(&runner, SIGNAL(completed(QString, int)), &app, SLOT(quit())); if (app.arguments().contains("-s")) { runner.run(args[app.arguments().indexOf("-s") + 1]); } else { args.removeAll("-qws"); if (args.contains("-c")) { args.removeAt(args.indexOf("-c") + 1); args.removeAll("-c"); } if (args.contains("-d")) { args.removeAt(args.indexOf("-d") + 1); args.removeAll("-d"); } if (args.count() != 2) { printUsage(); return 1; } runner.run(trikKernel::FileUtils::readFromFile(args[1])); } return app.exec(); }