#include #include #include #include #include #include "cppsettingsgenerator.h" #include "qmlsettingsgenerator.h" #include "settingstranslator.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QCoreApplication::setApplicationName(QStringLiteral(TARGET)); QCoreApplication::setApplicationVersion(QStringLiteral(VERSION)); QCoreApplication::setOrganizationName(QStringLiteral(COMPANY)); QCoreApplication::setOrganizationDomain(QStringLiteral(BUNDLE_PREFIX)); QCommandLineParser parser; parser.setApplicationDescription(QStringLiteral("A tool to create C++ and QML bindings for generic settings access")); parser.addVersionOption(); parser.addHelpOption(); parser.addOption({ {QStringLiteral("tr"), QStringLiteral("translate")}, QStringLiteral("Translate the given settings file. The output will be" "a dummy cpp file, writte to --impl.") }); parser.addOption({ QStringLiteral("qml"), QStringLiteral("Generate the QML-bindings for the given settings xml " "instead of the default cpp bindings.") }); parser.addOption({ QStringLiteral("in"), QStringLiteral("The input XML containing the settings definition"), QStringLiteral("file") }); parser.addOption({ QStringLiteral("header"), QStringLiteral("The of the header file to generate"), QStringLiteral("name") }); parser.addOption({ QStringLiteral("impl"), QStringLiteral("The of the implementation file to generate"), QStringLiteral("name") }); parser.process(a); if(parser.isSet(QStringLiteral("translate"))) { try { SettingsTranslator translator {parser.value(QStringLiteral("impl"))}; translator.process(parser.value(QStringLiteral("in"))); return EXIT_SUCCESS; } catch (SettingsTranslator::Exception &e) { qCritical() << e.what(); return EXIT_FAILURE; } } else if(parser.isSet(QStringLiteral("qml"))) { try { QmlSettingsGenerator generator { parser.value(QStringLiteral("header")), parser.value(QStringLiteral("impl")) }; generator.process(parser.value(QStringLiteral("in"))); return EXIT_SUCCESS; } catch (SettingsGeneratorImpl::Exception &e) { qCritical() << e.what(); return EXIT_FAILURE; } } else { try { CppSettingsGenerator generator { parser.value(QStringLiteral("header")), parser.value(QStringLiteral("impl")) }; generator.process(parser.value(QStringLiteral("in"))); return EXIT_SUCCESS; } catch (SettingsGeneratorImpl::Exception &e) { qCritical() << e.what(); return EXIT_FAILURE; } } }