summaryrefslogtreecommitdiff
path: root/src/qtplugininfo
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2015-03-18 06:57:12 +0900
committerThiago Macieira <thiago.macieira@intel.com>2015-03-26 17:23:42 +0000
commit222e119aa2eca2f7e5c881cf7e91f050684a6e13 (patch)
treea6dc26614b83fd02e27591c8bcadd4342d42b9e8 /src/qtplugininfo
parent93ec0666b8cd9aa8c45c1a9cabb6854380423451 (diff)
downloadqttools-222e119aa2eca2f7e5c881cf7e91f050684a6e13.tar.gz
qtplugininfo: Default to printing the metadata in a nicer form
Change-Id: I1a800c709d3543699131ffff13c3801cee682635 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Diffstat (limited to 'src/qtplugininfo')
-rw-r--r--src/qtplugininfo/qtplugininfo.cpp52
1 files changed, 51 insertions, 1 deletions
diff --git a/src/qtplugininfo/qtplugininfo.cpp b/src/qtplugininfo/qtplugininfo.cpp
index f34ee2630..39ffab974 100644
--- a/src/qtplugininfo/qtplugininfo.cpp
+++ b/src/qtplugininfo/qtplugininfo.cpp
@@ -40,9 +40,19 @@
#include <QJsonObject>
#include <QLibrary>
#include <QPluginLoader>
+#include <QStringList>
#include <iostream>
+enum PrintOption {
+ PrintIID = 0x01,
+ PrintClassName = 0x02,
+ PrintQtInfo = 0x04,
+ PrintUserData = 0x08
+};
+Q_DECLARE_FLAGS(PrintOptions, PrintOption)
+Q_DECLARE_OPERATORS_FOR_FLAGS(PrintOptions)
+
int main(int argc, char** argv)
{
QCoreApplication app(argc, argv);
@@ -51,6 +61,18 @@ int main(int argc, char** argv)
QCommandLineParser parser;
parser.setApplicationDescription(QStringLiteral("Qt5 plugin meta-data dumper"));
+ QCommandLineOption jsonFormatOption(QStringList() << "f" << "json-format",
+ QStringLiteral("Print JSON data as: indented, compact"), QStringLiteral("format"));
+ QCommandLineOption fullJsonOption("full-json",
+ QStringLiteral("Print the plugin metadata in JSON format"));
+ QCommandLineOption printOption(QStringList() << "p" << QStringLiteral("print"),
+ QStringLiteral("Print detail (iid, classname, qtinfo, userdata)"), QStringLiteral("detail"));
+ jsonFormatOption.setDefaultValue(QStringLiteral("indented"));
+ printOption.setDefaultValues(QStringList() << QStringLiteral("iid") << QStringLiteral("qtinfo") << QStringLiteral("userdata"));
+
+ parser.addOption(fullJsonOption);
+ parser.addOption(jsonFormatOption);
+ parser.addOption(printOption);
parser.addHelpOption();
parser.addVersionOption();
parser.addPositionalArgument(QStringLiteral("plugin"), QStringLiteral("Plug-in of which to read the meta data."), QStringLiteral("<plugin>"));
@@ -59,6 +81,19 @@ int main(int argc, char** argv)
if (parser.positionalArguments().isEmpty())
parser.showHelp(1);
+ bool fullJson = parser.isSet(fullJsonOption);
+ QJsonDocument::JsonFormat jsonFormat = parser.value(jsonFormatOption) == "indented" ? QJsonDocument::Indented : QJsonDocument::Compact;
+ QStringList printOptionList = parser.values(printOption);
+ PrintOptions print;
+ if (printOptionList.contains("iid"))
+ print |= PrintIID;
+ if (printOptionList.contains("classname"))
+ print |= PrintClassName;
+ if (printOptionList.contains("qtinfo"))
+ print |= PrintQtInfo;
+ if (printOptionList.contains("userdata"))
+ print |= PrintUserData;
+
foreach (const QString &plugin, parser.positionalArguments()) {
QByteArray pluginNativeName = QFile::encodeName(QDir::toNativeSeparators(plugin));
if (!QFile::exists(plugin)) {
@@ -108,7 +143,22 @@ int main(int argc, char** argv)
if (parser.positionalArguments().size() != 1)
std::cout << pluginNativeName.constData() << ": ";
- std::cout << QJsonDocument(metaData).toJson().constData();
+ if (fullJson) {
+ std::cout << QJsonDocument(metaData).toJson(jsonFormat).constData();
+ if (jsonFormat == QJsonDocument::Compact)
+ std::cout << std::endl;
+ } else {
+ if (print & PrintIID)
+ std::cout << "IID \"" << qPrintable(iid) << "\" ";
+ if (print & PrintClassName)
+ std::cout << "class " << qPrintable(className) << ' ';
+ if (print & PrintQtInfo)
+ std::cout << "Qt " << (version >> 16) << '.' << ((version >> 8) & 0xFF) << '.' << (version & 0xFF)
+ << (debug.toBool() ? " (debug)" : " (release)");
+ std::cout << std::endl;
+ if (print & PrintUserData && userData.isObject())
+ std::cout << "User Data: " << QJsonDocument(userData.toObject()).toJson().constData();
+ }
}
return 0;