Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qqmltccommandlineutils.cpp
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3// Qt-Security score:significant
4
6
7#include <QtCore/qstring.h>
8#include <QtCore/qfileinfo.h>
9#include <QtCore/qdir.h>
10#include <QtCore/qurl.h>
11#include <QtCore/qlibraryinfo.h>
12
14
15namespace QQmltc {
16
17QString parseUrlArgument(const QString &arg)
18{
19 const QUrl url = QUrl::fromUserInput(arg, QDir::currentPath(), QUrl::AssumeLocalFile);
20 if (!url.isValid()) {
21 fprintf(stderr, "Invalid URL: \"%s\"\n", qPrintable(arg));
22 return QString();
23 }
24 if (!url.isLocalFile()) {
25 fprintf(stderr, "\"%s\" is not a local file\n", qPrintable(arg));
26 return QString();
27 }
28 return url.toLocalFile();
29}
30
31QString loadUrl(const QString &url)
32{
33 const QFileInfo fi(url);
34 if (!fi.exists()) {
35 fprintf(stderr, "\"%s\" does not exist.\n",
36 qPrintable(QDir::toNativeSeparators(fi.absoluteFilePath())));
37 return QString();
38 }
39
40 QFile f(fi.absoluteFilePath());
41 if (!f.open(QIODevice::ReadOnly)) {
42 fprintf(stderr, "Unable to read \"%s\": %s.\n",
43 qPrintable(QDir::toNativeSeparators(fi.absoluteFilePath())),
44 qPrintable(f.errorString()));
45 return QString();
46 }
47
48 QByteArray data(fi.size(), Qt::Uninitialized);
49 if (f.read(data.data(), data.size()) != data.size()) {
50 fprintf(stderr, "Unable to read \"%s\": %s.\n",
51 qPrintable(QDir::toNativeSeparators(fi.absoluteFilePath())),
52 qPrintable(f.errorString()));
53 return QString();
54 }
55 return QString::fromUtf8(data);
56}
57
59{
60 const QFileInfo fi(url);
61 Q_ASSERT(fi.exists());
62 QDir dir = fi.dir();
63 QString implicitImport = dir.canonicalPath(); // resolves symlinks, etc.
64 if (implicitImport.isEmpty()) {
65 fprintf(stderr, "Cannot resolve implicit import directory of \"%s\"",
66 qPrintable(QDir::toNativeSeparators(fi.absoluteFilePath())));
67 return QString();
68 }
69 return implicitImport;
70}
71
72} // namespace QQmltc
73
74QT_END_NAMESPACE
QString getImplicitImportDirectory(const QString &url)
QString parseUrlArgument(const QString &arg)
QString loadUrl(const QString &url)
Combined button and popup list for selecting options.