diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-05-15 12:31:03 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-05-16 09:36:15 +0000 |
commit | 9ef60d43a8918769fc6e16c44e1068ac87450828 (patch) | |
tree | 6f2e8ed80c7a7911876c6798c3670eb65deb3dc3 /sources | |
parent | a66352996264d7dfbbe68df179421a8e0ef3637a (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')
-rw-r--r-- | sources/pyside2/doc/additionaldocs.lst | 2 | ||||
-rw-r--r-- | sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp | 71 |
2 files changed, 46 insertions, 27 deletions
diff --git a/sources/pyside2/doc/additionaldocs.lst b/sources/pyside2/doc/additionaldocs.lst index ff03d3656..037cb60f7 100644 --- a/sources/pyside2/doc/additionaldocs.lst +++ b/sources/pyside2/doc/additionaldocs.lst @@ -50,7 +50,9 @@ # fi # fi # done +# A line enclosed in [] denotes a (relative) target directory +[overviews] animation-overview.webxml animation.webxml application-windows.webxml 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) |