aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-05-15 12:31:03 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-05-16 09:36:15 +0000
commit9ef60d43a8918769fc6e16c44e1068ac87450828 (patch)
tree6f2e8ed80c7a7911876c6798c3670eb65deb3dc3 /sources/shiboken2
parenta66352996264d7dfbbe68df179421a8e0ef3637a (diff)
Make it possible to specify a target directory for additional documentation
Introduce a simple [] notation for target directories. Task-number: PYSIDE-363 Change-Id: I3a0cd255faf84f564a64992cba88244ae14c2452 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'sources/shiboken2')
-rw-r--r--sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp71
1 files changed, 44 insertions, 27 deletions
diff --git a/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp b/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp
index 7206d7ca8..74aac832f 100644
--- a/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp
+++ b/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp
@@ -2194,44 +2194,61 @@ void QtDocGenerator::writeAdditionalDocumentation()
qPrintable(FileOut::msgCannotOpenForReading(additionalDocumentationFile)));
return;
}
- const QByteArray contents = additionalDocumentationFile.readAll();
- const QStringList lines = QFile::decodeName(contents).split(QLatin1Char('\n'));
- QFileInfoList additionalDocFiles;
- additionalDocFiles.reserve(lines.size());
- for (const QString &lineIn : lines) {
- const QString line = lineIn.trimmed();
- if (!line.isEmpty() && !line.startsWith(QLatin1Char('#'))) {
+
+ QDir outDir(outputDirectory());
+ const QString rstSuffix = fileNameSuffix();
+
+ QString errorMessage;
+ int successCount = 0;
+ int count = 0;
+
+ QString targetDir = outDir.absolutePath();
+
+ while (!additionalDocumentationFile.atEnd()) {
+ const QByteArray lineBA = additionalDocumentationFile.readLine().trimmed();
+ if (lineBA.isEmpty() || lineBA.startsWith('#'))
+ continue;
+ const QString line = QFile::decodeName(lineBA);
+ // Parse "[directory]" specification
+ if (line.size() > 2 && line.startsWith(QLatin1Char('[')) && line.endsWith(QLatin1Char(']'))) {
+ const QString dir = line.mid(1, line.size() - 2);
+ if (dir.isEmpty() || dir == QLatin1String(".")) {
+ targetDir = outDir.absolutePath();
+ } else {
+ if (!outDir.exists(dir) && !outDir.mkdir(dir)) {
+ qCWarning(lcShiboken, "Cannot create directory %s under %s",
+ qPrintable(dir),
+ qPrintable(QDir::toNativeSeparators(outputDirectory())));
+ break;
+ }
+ targetDir = outDir.absoluteFilePath(dir);
+ }
+ } else {
+ // Normal file entry
QFileInfo fi(m_docDataDir + QLatin1Char('/') + line);
if (fi.isFile()) {
- additionalDocFiles.append(fi);
+ const QString rstFileName = fi.baseName() + rstSuffix;
+ const QString rstFile = targetDir + QLatin1Char('/') + rstFileName;
+ if (QtXmlToSphinx::convertToRst(this, fi.absoluteFilePath(),
+ rstFile, QString(), &errorMessage)) {
+ ++successCount;
+ qCDebug(lcShiboken).nospace().noquote() << __FUNCTION__
+ << " converted " << fi.fileName()
+ << ' ' << rstFileName;
+ } else {
+ qCWarning(lcShiboken, "%s", qPrintable(errorMessage));
+ }
} else {
qCWarning(lcShiboken, "%s",
qPrintable(msgNonExistentAdditionalDocFile(m_docDataDir, line)));
}
+ ++count;
}
}
additionalDocumentationFile.close();
- const QString rstPrefix = outputDirectory() + QLatin1Char('/');
- const QString rstSuffix = fileNameSuffix();
-
- QString errorMessage;
- int successCount = 0;
- for (const QFileInfo &additionalDocFile : additionalDocFiles) {
- const QString rstFileName = additionalDocFile.baseName() + rstSuffix;
- const QString rstFile = rstPrefix + rstFileName;
- if (QtXmlToSphinx::convertToRst(this, additionalDocFile.absoluteFilePath(),
- rstFile, QString(), &errorMessage)) {
- ++successCount;
- qCDebug(lcShiboken).nospace().noquote() << __FUNCTION__
- << " converted " << additionalDocFile.fileName()
- << ' ' << rstFileName;
- } else {
- qCWarning(lcShiboken, "%s", qPrintable(errorMessage));
- }
- }
qCInfo(lcShiboken, "Created %d/%d additional documentation files.",
- successCount, additionalDocFiles.size());
+ successCount, count);
}
bool QtDocGenerator::doSetup(const QMap<QString, QString>& args)