# # # patch "guitone/src/monotone/MonotoneDelegate.cpp" # from [aff2e9c2aa1b91433f4d50d29c58b48ed4a45844] # to [7ff79f09f2f3e612c5b24171374db3df9b2a40bc] # # patch "guitone/src/monotone/MonotoneDelegate.h" # from [b874cc9da422e4dbdf80623712b01d3f0213aa37] # to [cc1fa1480e54e8f31e454babc9faa80e380a11db] # ============================================================ --- guitone/src/monotone/MonotoneDelegate.cpp aff2e9c2aa1b91433f4d50d29c58b48ed4a45844 +++ guitone/src/monotone/MonotoneDelegate.cpp 7ff79f09f2f3e612c5b24171374db3df9b2a40bc @@ -21,6 +21,7 @@ #include "MonotoneDelegate.h" #include "Monotone.h" #include "Guitone.h" +#include "BasicIOParser.h" MonotoneDelegate::MonotoneDelegate(AutomateCommand * cmd) : cmdModel(cmd), commandNumber(-1) @@ -172,3 +173,51 @@ QStringList MonotoneDelegate::resolveSel QStringList revList = data.split('\n', QString::SkipEmptyParts); return revList; } + +QMap MonotoneDelegate::getRevisionCerts(QObject * obj, const QString & revision) +{ + Monotone * mtn = MTN(obj); + + int cmdNum; + mtn->executeCommand(QStringList() << "certs" << revision, cmdNum); + + QString data = mtn->getDecodedData(cmdNum); + QMap map; + + if (mtn->getReturnCode(cmdNum) > 0) + { + qCritical("Couldn't query revision certs for %s: %s", + qPrintable(revision), qPrintable(data)); + return map; + } + + BasicIOParser parser(data); + if (!parser.parse()) + { + qCritical("Could not parse basic_io."); + return map; + } + + StanzaList stanzas = parser.getStanzas(); + foreach (Stanza st, stanzas) + { + QString lastName; + foreach (StanzaEntry en, st) + { + if (en.sym == "name") + { + QString lastName = en.vals.at(0); + map.insert(lastName, ""); + } + + if (en.sym == "value") + { + Q_ASSERT(lastName.length() > 0); + map[lastName] = en.vals.at(0); + } + } + } + return map; +} + + ============================================================ --- guitone/src/monotone/MonotoneDelegate.h b874cc9da422e4dbdf80623712b01d3f0213aa37 +++ guitone/src/monotone/MonotoneDelegate.h cc1fa1480e54e8f31e454babc9faa80e380a11db @@ -24,6 +24,7 @@ #include "AutomateCommand.h" #include +#include class MonotoneDelegate : public QObject { @@ -40,6 +41,7 @@ public: static QString getBranchName(QObject *); static QString getBranchNameShort(QObject *); static QStringList resolveSelector(QObject *, const QString &); + static QMap getRevisionCerts(QObject *, const QString &); private: AutomateCommand * cmdModel;