From 7a4eba945d45c261c5a41f811997370e1d667d02 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Sat, 27 Jul 2019 02:35:50 +0200 Subject: [PATCH] Autogenerate the ts file --- libnymea/devices/plugin.pri | 5 ++-- tools/nymea-plugininfocompiler/main.cpp | 3 +- .../plugininfocompiler.cpp | 30 ++++++++++++++++++- .../plugininfocompiler.h | 2 +- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/libnymea/devices/plugin.pri b/libnymea/devices/plugin.pri index ee4f8ebe..c3fa9e4c 100644 --- a/libnymea/devices/plugin.pri +++ b/libnymea/devices/plugin.pri @@ -63,8 +63,9 @@ QMAKE_EXTRA_TARGETS += clean plugininfo_clean # Install translation files TRANSLATIONS *= $$files($${_PRO_FILE_PWD_}/translations/*ts, true) lupdate.depends = FORCE -lupdate.depends += plugininfo -lupdate.commands = lupdate -recursive -no-obsolete $${_PRO_FILE_PWD_}/"$$TARGET".pro; +lupdate.depends += qmake_all +lupdate.commands = nymea-plugininfocompiler $${JSONFILE} --translation $${_PRO_FILE_PWD_}/translations/; \ + lupdate -recursive -no-obsolete $${_PRO_FILE_PWD_}/"$$TARGET".pro; QMAKE_EXTRA_TARGETS += lupdate # make lrelease to build .qm from .ts diff --git a/tools/nymea-plugininfocompiler/main.cpp b/tools/nymea-plugininfocompiler/main.cpp index d0f20497..0ab88d14 100644 --- a/tools/nymea-plugininfocompiler/main.cpp +++ b/tools/nymea-plugininfocompiler/main.cpp @@ -36,6 +36,7 @@ int main(int argc, char *argv[]) parser.addHelpOption(); parser.addOption({{"o", "output"}, "Write generated output header to .", "file"}); parser.addOption({{"e", "extern"}, "Write generated output header (extern definitions) to .", "file"}); + parser.addOption({{"t", "translations"}, "Write generated output header (extern definitions) to .", "directory"}); parser.addPositionalArgument("input", "The input json file"); parser.process(a); @@ -47,7 +48,7 @@ int main(int argc, char *argv[]) PluginInfoCompiler pic; - int ret = pic.compile(parser.positionalArguments().first(), parser.value("output"), parser.value("extern")); + int ret = pic.compile(parser.positionalArguments().first(), parser.value("output"), parser.value("extern"), parser.value("translations")); return ret; diff --git a/tools/nymea-plugininfocompiler/plugininfocompiler.cpp b/tools/nymea-plugininfocompiler/plugininfocompiler.cpp index 7c418d56..9f462148 100644 --- a/tools/nymea-plugininfocompiler/plugininfocompiler.cpp +++ b/tools/nymea-plugininfocompiler/plugininfocompiler.cpp @@ -27,13 +27,14 @@ #include #include #include +#include PluginInfoCompiler::PluginInfoCompiler() { } -int PluginInfoCompiler::compile(const QString &inputFile, const QString &outputFile, const QString outputFileExtern) +int PluginInfoCompiler::compile(const QString &inputFile, const QString &outputFile, const QString outputFileExtern, const QString &translationsPath) { // First, process the input json... QFile jsonFile(inputFile); @@ -90,6 +91,33 @@ int PluginInfoCompiler::compile(const QString &inputFile, const QString &outputF } } + if (!translationsPath.isEmpty()) { + QDir dir; + if (!dir.exists(translationsPath)) { + if(!dir.mkpath(translationsPath)) { + qWarning() << "Error creating translation file directory" << translationsPath; + return 1; + } + qDebug() << "Created translations dir"; + } + + QFile f(translationsPath + '/' + metadata.pluginId().toString().remove(QRegExp("[{}]")) + "-en_US.ts"); + QByteArray translationsStub = ""; + if (!f.exists()) { + if (!f.open(QFile::WriteOnly | QFile::Text)) { + qWarning() << "Error creating translation file"; + return 1; + } + if (f.write(translationsStub) == -1) { + qWarning() << "Error writing translation file"; + return 1; + } + f.close(); + qDebug() << "Created translations stub"; + } + } + + // Files are open. Ready to write content. QString header; diff --git a/tools/nymea-plugininfocompiler/plugininfocompiler.h b/tools/nymea-plugininfocompiler/plugininfocompiler.h index aea74c25..4b67c8c0 100644 --- a/tools/nymea-plugininfocompiler/plugininfocompiler.h +++ b/tools/nymea-plugininfocompiler/plugininfocompiler.h @@ -34,7 +34,7 @@ class PluginInfoCompiler public: PluginInfoCompiler(); - int compile(const QString &inputFile, const QString &outputFile, const QString outputFileExtern); + int compile(const QString &inputFile, const QString &outputFile, const QString outputFileExtern, const QString &translationsPath); private: