aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmlimportscanner
diff options
context:
space:
mode:
authorFawzi Mohamed <fawzi.mohamed@digia.com>2014-09-18 22:40:09 +0200
committerFawzi Mohamed <fawzi.mohamed@digia.com>2014-09-25 16:13:34 +0200
commit26387cf498843ce10dd4411d538e1e44a823b8a8 (patch)
treea365498ad7adacce881018c2dba84b3e663ab4b8 /tools/qmlimportscanner
parentbe22466c8b54645adda216c55438d16b54321a1a (diff)
qmlimportscanner: allow a qmlFile to come from stdin
Change-Id: I22b0e45a8aa25d232791cdbeca15b5bc7400ae7d Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Diffstat (limited to 'tools/qmlimportscanner')
-rw-r--r--tools/qmlimportscanner/main.cpp42
1 files changed, 26 insertions, 16 deletions
diff --git a/tools/qmlimportscanner/main.cpp b/tools/qmlimportscanner/main.cpp
index ac4f6ae437..102b5ada6e 100644
--- a/tools/qmlimportscanner/main.cpp
+++ b/tools/qmlimportscanner/main.cpp
@@ -194,16 +194,8 @@ QVariantList findPathsForModuleImports(const QVariantList &imports)
}
// Scan a single qml file for import statements
-QVariantList findQmlImportsInQmlFile(const QString &filePath)
+static QVariantList findQmlImportsInQmlCode(const QString &filePath, const QString &code)
{
- QFile file(filePath);
- if (!file.open(QIODevice::ReadOnly)) {
- std::cerr << "Cannot open input file " << QDir::toNativeSeparators(file.fileName()).toStdString()
- << ':' << file.errorString().toStdString() << std::endl;
- return QVariantList();
- }
- QString code = QString::fromUtf8(file.readAll());
-
QQmlJS::Engine engine;
QQmlJS::Lexer lexer(&engine);
lexer.setCode(code, /*line = */ 1);
@@ -212,12 +204,25 @@ QVariantList findQmlImportsInQmlFile(const QString &filePath)
if (!parser.parse() || !parser.diagnosticMessages().isEmpty()) {
// Extract errors from the parser
foreach (const QQmlJS::DiagnosticMessage &m, parser.diagnosticMessages()) {
- std::cerr << QDir::toNativeSeparators(file.fileName()).toStdString() << ':'
+ std::cerr << QDir::toNativeSeparators(filePath).toStdString() << ':'
<< m.loc.startLine << ':' << m.message.toStdString() << std::endl;
}
return QVariantList();
}
- return findImportsInAst(parser.ast()->headers, code, file.fileName());
+ return findImportsInAst(parser.ast()->headers, code, filePath);
+}
+
+// Scan a single qml file for import statements
+static QVariantList findQmlImportsInQmlFile(const QString &filePath)
+{
+ QFile file(filePath);
+ if (!file.open(QIODevice::ReadOnly)) {
+ std::cerr << "Cannot open input file " << QDir::toNativeSeparators(file.fileName()).toStdString()
+ << ':' << file.errorString().toStdString() << std::endl;
+ return QVariantList();
+ }
+ QString code = QString::fromUtf8(file.readAll());
+ return findQmlImportsInQmlCode(filePath, code);
}
// Scan a single javascrupt file for import statements
@@ -272,10 +277,15 @@ QVariantList findQmlImportsInJavascriptFile(const QString &filePath)
QVariantList findQmlImportsInFile(const QString &filePath)
{
QVariantList imports;
- if (filePath.endsWith(QStringLiteral(".qml")))
- imports = findQmlImportsInQmlFile(filePath);
- else if (filePath.endsWith(QStringLiteral(".js")))
+ if (filePath == QLatin1String("-")) {
+ QFile f;
+ if (f.open(stdin, QIODevice::ReadOnly))
+ imports = findQmlImportsInQmlCode(QLatin1String("<stdin>"), QString::fromUtf8(f.readAll()));
+ } else if (filePath.endsWith(QStringLiteral(".qml"))) {
+ imports = findQmlImportsInQmlFile(filePath);
+ } else if (filePath.endsWith(QStringLiteral(".js"))) {
imports = findQmlImportsInJavascriptFile(filePath);
+ }
return findPathsForModuleImports(imports);
}
@@ -390,7 +400,7 @@ int main(int argc, char *argv[])
const QString &arg = args.at(i);
++i;
QStringList *argReceiver = 0;
- if (!arg.startsWith(QLatin1Char('-'))) {
+ if (!arg.startsWith(QLatin1Char('-')) || arg == QLatin1String("-")) {
qmlRootPaths += arg;
} else if (arg == QLatin1String("-rootPath")) {
if (i >= args.count())
@@ -415,7 +425,7 @@ int main(int argc, char *argv[])
while (i < args.count()) {
const QString arg = args.at(i);
- if (arg.startsWith(QLatin1Char('-')))
+ if (arg.startsWith(QLatin1Char('-')) && arg != QLatin1String("-"))
break;
++i;
*argReceiver += arg;