summaryrefslogtreecommitdiffstats
path: root/src/linguist/lprodump/main.cpp
diff options
context:
space:
mode:
authorTarja Sundqvist <tarja.sundqvist@qt.io>2023-04-24 17:08:06 +0300
committerTarja Sundqvist <tarja.sundqvist@qt.io>2023-04-24 17:08:06 +0300
commit7918981beb4bcefea4f686370d38c99fcefaf33e (patch)
tree38298a9b906841f3e44c6666da821cc0f07ac202 /src/linguist/lprodump/main.cpp
parent1e7d50937f4b94c37a16f6370c0fd4ccb4329190 (diff)
parentd35b8c5a9687ef4b5d76d96c29f14f2c24e5bf2b (diff)
Merge remote-tracking branch 'origin/tqtc/lts-5.15.10' into tqtc/lts-5.15-opensourcev5.15.10-lts-lgpl
Diffstat (limited to 'src/linguist/lprodump/main.cpp')
-rw-r--r--src/linguist/lprodump/main.cpp36
1 files changed, 27 insertions, 9 deletions
diff --git a/src/linguist/lprodump/main.cpp b/src/linguist/lprodump/main.cpp
index 857786beb..fcad63221 100644
--- a/src/linguist/lprodump/main.cpp
+++ b/src/linguist/lprodump/main.cpp
@@ -104,6 +104,8 @@ static void printUsage()
" Trace processing .pro files. Specify twice for more verbosity.\n"
" -out <filename>\n"
" Name of the output file.\n"
+ " -translations-variables <variable_1>[,<variable_2>,...]\n"
+ " Comma-separated list of QMake variables containing .ts files.\n"
" -version\n"
" Display the version of lprodump and exit.\n"
));
@@ -272,11 +274,13 @@ static void excludeProjects(const ProFileEvaluator &visitor, QStringList *subPro
}
static QJsonArray processProjects(bool topLevel, const QStringList &proFiles,
+ const QStringList &translationsVariables,
const QHash<QString, QString> &outDirMap,
ProFileGlobals *option, QMakeVfs *vfs, QMakeParser *parser,
bool *fail);
-static QJsonObject processProject(const QString &proFile, ProFileGlobals *option, QMakeVfs *vfs,
+static QJsonObject processProject(const QString &proFile, const QStringList &translationsVariables,
+ ProFileGlobals *option, QMakeVfs *vfs,
QMakeParser *parser, ProFileEvaluator &visitor)
{
QJsonObject result;
@@ -304,7 +308,7 @@ static QJsonObject processProject(const QString &proFile, ProFileGlobals *option
subProFiles << subPro;
}
}
- QJsonArray subResults = processProjects(false, subProFiles,
+ QJsonArray subResults = processProjects(false, subProFiles, translationsVariables,
QHash<QString, QString>(), option, vfs, parser,
nullptr);
if (!subResults.isEmpty())
@@ -321,6 +325,7 @@ static QJsonObject processProject(const QString &proFile, ProFileGlobals *option
}
static QJsonArray processProjects(bool topLevel, const QStringList &proFiles,
+ const QStringList &translationsVariables,
const QHash<QString, QString> &outDirMap,
ProFileGlobals *option, QMakeVfs *vfs, QMakeParser *parser, bool *fail)
{
@@ -346,16 +351,20 @@ static QJsonArray processProjects(bool topLevel, const QStringList &proFiles,
continue;
}
- QJsonObject prj = processProject(proFile, option, vfs, parser, visitor);
+ QJsonObject prj = processProject(proFile, translationsVariables, option, vfs, parser,
+ visitor);
setValue(prj, "projectFile", proFile);
- if (visitor.contains(QLatin1String("TRANSLATIONS"))) {
- QStringList tsFiles;
+ QStringList tsFiles;
+ for (const QString &varName : translationsVariables) {
+ if (!visitor.contains(varName))
+ continue;
QDir proDir(QFileInfo(proFile).path());
- const QStringList translations = visitor.values(QLatin1String("TRANSLATIONS"));
+ const QStringList translations = visitor.values(varName);
for (const QString &tsFile : translations)
tsFiles << proDir.filePath(tsFile);
- setValue(prj, "translations", tsFiles);
}
+ if (!tsFiles.isEmpty())
+ setValue(prj, "translations", tsFiles);
result.append(prj);
pro->deref();
}
@@ -367,6 +376,7 @@ int main(int argc, char **argv)
QCoreApplication app(argc, argv);
QStringList args = app.arguments();
QStringList proFiles;
+ QStringList translationsVariables = { QStringLiteral("TRANSLATIONS") };
QString outDir = QDir::currentPath();
QHash<QString, QString> outDirMap;
QString outputFilePath;
@@ -409,6 +419,14 @@ int main(int argc, char **argv)
return 1;
}
outDir = QDir::cleanPath(QFileInfo(args[i]).absoluteFilePath());
+ } else if (arg == QLatin1String("-translations-variables")) {
+ ++i;
+ if (i == argc) {
+ printErr(LD::tr("The -translations-variables option must be followed by a "
+ "comma-separated list of variable names.\n"));
+ return 1;
+ }
+ translationsVariables = args.at(i).split(QLatin1Char(','));
} else if (arg.startsWith(QLatin1String("-")) && arg != QLatin1String("-")) {
printErr(LD::tr("Unrecognized option '%1'.\n").arg(arg));
return 1;
@@ -446,8 +464,8 @@ int main(int argc, char **argv)
QMakeVfs vfs;
QMakeParser parser(0, &vfs, &evalHandler);
- QJsonArray results = processProjects(true, proFiles, outDirMap, &option, &vfs,
- &parser, &fail);
+ QJsonArray results = processProjects(true, proFiles, translationsVariables, outDirMap, &option,
+ &vfs, &parser, &fail);
if (fail)
return 1;