Files
qt-creator/tests/manual/trk/main_launcher.cpp
2009-08-20 11:30:10 +02:00

106 lines
3.3 KiB
C++

#include "launcher.h"
#include <QtCore/QCoreApplication>
#include <QtCore/QDebug>
#include <QtCore/QStringList>
static const char *usageC =
"\nUsage: %1 <trk_port_name> [-v] [-i remote_sis_file | -I local_sis_file remote_sis_file] <remote_executable_name>\n"
"\nOptions:\n -v verbose\n"
" -f turn serial message frame off\n\n"
"\nPing:\n"
"%1 COM5\n"
"\nRemote launch:\n"
"%1 COM5 C:\\sys\\bin\\test.exe\n"
"\nInstallation and remote launch:\n"
"%1 COM5 -i C:\\Data\\test_gcce_udeb.sisx C:\\sys\\bin\\test.exe\n"
"\nCopy from local file, installation and remote launch:\n"
"%1 COM5 -I C:\\Projects\\test\\test_gcce_udeb.sisx C:\\Data\\test_gcce_udeb.sisx C:\\sys\\bin\\test.exe\n";
static void usage()
{
const QString msg = QString::fromLatin1(usageC).arg(QCoreApplication::applicationName());
qWarning("%s", qPrintable(msg));
}
static bool parseArguments(const QStringList &arguments, trk::Launcher &launcher)
{
// Parse away options
bool install = false;
bool customInstall = false;
const int argCount = arguments.size();
int verbosity = 0;
int a = 1;
for ( ; a < argCount; a++) {
const QString option = arguments.at(a);
if (!option.startsWith(QLatin1Char('-')))
break;
if (option.size() != 2)
return false;
switch (option.at(1).toAscii()) {
case 'v':
verbosity++;
break;
case 'f':
launcher.setSerialFrame(false);
break;verbosity++;
case 'i':
install = true;
break;
case 'I':
customInstall = true;
break;
default:
return false;
}
}
launcher.setVerbose(verbosity);
// Evaluate arguments
const int remainingArgsCount = argCount - a;
if (remainingArgsCount == 1 && !install && !customInstall) {
launcher.setTrkServerName(arguments.at(a)); // ping
return true;
}
if (remainingArgsCount == 2 && !install && !customInstall) {
// remote exec
launcher.setTrkServerName(arguments.at(a)); // ping
launcher.setFileName(arguments.at(a + 1));
return true;
}
if (remainingArgsCount == 3 && install && !customInstall) {
launcher.setTrkServerName(arguments.at(a)); // ping
launcher.setInstallFileName(arguments.at(a + 1));
launcher.setFileName(arguments.at(a + 2));
return true;
}
if (remainingArgsCount == 4 && !install && customInstall) {
launcher.setTrkServerName(arguments.at(a)); // ping
launcher.setCopyFileName(arguments.at(a + 1), arguments.at(a + 2));
launcher.setInstallFileName(arguments.at(a + 2));
launcher.setFileName(arguments.at(a + 3));
return true;
}
return false;
}
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QCoreApplication::setApplicationName(QLatin1String("trklauncher"));
QCoreApplication::setOrganizationName(QLatin1String("Nokia"));
trk::Launcher launcher;
if (!parseArguments(app.arguments(), launcher)) {
usage();
return 1;
}
QObject::connect(&launcher, SIGNAL(finished()), &app, SLOT(quit()));
QString errorMessage;
if (launcher.startServer(&errorMessage))
return app.exec();
qWarning("%s\n", qPrintable(errorMessage));
return 4;
}