end work on extscript class

This commit is contained in:
arcan1s 2014-10-31 04:43:17 +03:00
parent 0a61d926f8
commit 2cd04e1f7f
2 changed files with 64 additions and 23 deletions

View File

@ -19,6 +19,7 @@
#include <QDebug> #include <QDebug>
#include <QDir> #include <QDir>
#include <QTextCodec>
#include <pdebug/pdebug.h> #include <pdebug/pdebug.h>
#include <task/taskadds.h> #include <task/taskadds.h>
@ -30,6 +31,7 @@ ExtScript::ExtScript(const QString scriptName, const QStringList directories, co
dirs(directories), dirs(directories),
debug(debugCmd) debug(debugCmd)
{ {
readConfiguration();
} }
@ -175,29 +177,67 @@ void ExtScript::readConfiguration()
} }
QMap<QString, QVariant> ExtScript::run(const int time)
{
if (debug) qDebug() << PDEBUG;
QMap<QString, QVariant> response;
if (time != interval) {
response[QString("refresh")] = false;
return response;
}
response[QString("refresh")] = true;
QStringList cmdList;
if (!prefix.isEmpty())
cmdList.append(prefix);
QString fullPath = name;
for (int i=0; i<dirs.count(); i++) {
if (!QDir(dirs[i]).entryList().contains(name)) continue;
fullPath = dirs[i] + QDir::separator() + name;
break;
}
cmdList.append(fullPath);
if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmdList.join(QChar(' '));
TaskResult process = runTask(cmdList.join(QChar(' ')));
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode;
QString info = QTextCodec::codecForMib(106)->toUnicode(process.error).trimmed();
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
switch(redirect) {
case stdout2stderr:
if (debug) qDebug() << PDEBUG << ":" << "Debug" << info;
if (debug) qDebug() << PDEBUG << ":" << "Output" << qoutput;
break;
case stderr2stdout:
response[QString("output")] = info + QString("\t") + qoutput;
break;
default:
if (debug) qDebug() << PDEBUG << ":" << "Debug" << info;
response[QString("output")] = qoutput;
break;
}
if (!output)
response[QString("output")] = QString::number(process.exitCode);
return response;
}
void ExtScript::fromExternalConfiguration(const QMap<QString, QString> settings) void ExtScript::fromExternalConfiguration(const QMap<QString, QString> settings)
{ {
if (settings.contains(QString("ACTIVE"))) { if (settings.contains(QString("ACTIVE")))
if (settings[QString("ACTIVE")] == QString("true")) setActive(settings[QString("ACTIVE")] == QString("true"));
setActive(true); if (settings.contains(QString("INTERVAL")))
else
setActive(false);
}
if (settings.contains(QString("INTERVAL"))) {
setInterval(settings[QString("INTERVAL")].toInt()); setInterval(settings[QString("INTERVAL")].toInt());
} if (settings.contains(QString("PREFIX")))
if (settings.contains(QString("PREFIX"))) {
setPrefix(settings[QString("PREFIX")]); setPrefix(settings[QString("PREFIX")]);
} if (settings.contains(QString("OUTPUT")))
if (settings.contains(QString("OUTPUT"))) { setHasOutput(settings[QString("OUTPUT")] == QString("true"));
if (settings[QString("OUTPUT")] == QString("true")) if (settings.contains(QString("REDIRECT")))
setHasOutput(true);
else
setHasOutput(false);
}
if (settings.contains(QString("REDIRECT"))) {
setRedirect((Redirect)settings[QString("REDIRECT")].toInt()); setRedirect((Redirect)settings[QString("REDIRECT")].toInt());
} if (!output)
redirect = stdout2stderr;
} }
@ -232,17 +272,17 @@ QMap<QString, QString> ExtScript::toExternalConfiguration()
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
QMap<QString, QString> settings; QMap<QString, QString> settings;
if (isActive()) if (active)
settings[QString("ACTIVE")] = QString("true"); settings[QString("ACTIVE")] = QString("true");
else else
settings[QString("ACTIVE")] = QString("false"); settings[QString("ACTIVE")] = QString("false");
settings[QString("INTERVAL")] = QString::number(getInterval()); settings[QString("INTERVAL")] = QString::number(interval);
settings[QString("PREFIX")] = getPrefix(); settings[QString("PREFIX")] = prefix;
if (hasOutput()) if (output)
settings[QString("OUTPUT")] = QString("true"); settings[QString("OUTPUT")] = QString("true");
else else
settings[QString("OUTPUT")] = QString("false"); settings[QString("OUTPUT")] = QString("false");
settings[QString("REDIRECT")] = QString::number(getRedirect()); settings[QString("REDIRECT")] = QString::number(redirect);
return settings; return settings;
} }

View File

@ -50,6 +50,7 @@ public:
public slots: public slots:
void readConfiguration(); void readConfiguration();
QMap<QString, QVariant> run(const int time);
private: private:
// configuration // configuration