aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmltoolingsettings/qqmltoolingutils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmltoolingsettings/qqmltoolingutils.cpp')
-rw-r--r--src/qmltoolingsettings/qqmltoolingutils.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/qmltoolingsettings/qqmltoolingutils.cpp b/src/qmltoolingsettings/qqmltoolingutils.cpp
new file mode 100644
index 0000000000..1cf1602b4b
--- /dev/null
+++ b/src/qmltoolingsettings/qqmltoolingutils.cpp
@@ -0,0 +1,57 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#include "qqmltoolingutils_p.h"
+
+#include <QtCore/qfileinfo.h>
+#include <QtCore/qdir.h>
+
+using namespace Qt::StringLiterals;
+
+/*!
+\internal
+
+Helper utils to help QQmlTooling retrieve certain values from the environment or command line
+options.
+It helps to keep the warning messages consistent between tools like qmlls and qmllint when
+they use environment variables, for examples.
+*/
+
+void QQmlToolingUtils::warnForInvalidDirs(const QStringList &dirs, const QString &origin)
+{
+ for (const QString &path : dirs) {
+ QFileInfo info(path);
+ if (!info.exists()) {
+ qWarning().noquote().nospace()
+ << u"Argument \"%1\" %2 does not exist."_s.arg(path, origin);
+ continue;
+ }
+ if (!info.isDir()) {
+ qWarning().noquote().nospace()
+ << "Argument \"" << path << "\" " << origin << " is not a directory.";
+ continue;
+ }
+ }
+}
+
+QStringList
+QQmlToolingUtils::getAndWarnForInvalidDirsFromEnv(const QString &environmentVariableName)
+{
+ const QStringList envPaths = qEnvironmentVariable(environmentVariableName.toUtf8())
+ .split(QDir::listSeparator(), Qt::SkipEmptyParts);
+ warnForInvalidDirs(envPaths,
+ u"from environment variable \"%1\""_s.arg(environmentVariableName));
+ return envPaths;
+}
+
+QStringList QQmlToolingUtils::getAndWarnForInvalidDirsFromOption(const QCommandLineParser &parser,
+ const QCommandLineOption &option)
+{
+ if (!parser.isSet(option))
+ return {};
+
+ const QStringList dirs = parser.values(option);
+ const QString optionName = option.names().constFirst();
+ warnForInvalidDirs(dirs, u"passed to -%1"_s.arg(optionName));
+ return dirs;
+}