ProjectExplorer: Use Result in JsonWizardFileGenerator

Change-Id: I068c4a22099f406142e24a528eba61be147e10a5
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2025-04-14 11:33:58 +02:00
parent a807c28cde
commit f97a62b620

View File

@@ -28,14 +28,14 @@ namespace ProjectExplorer::Internal {
class JsonWizardFileGenerator final : public JsonWizardGenerator class JsonWizardFileGenerator final : public JsonWizardGenerator
{ {
public: public:
Utils::Result<> setup(const QVariant &data); Result<> setup(const QVariant &data);
Core::GeneratedFiles fileList(MacroExpander *expander, Core::GeneratedFiles fileList(MacroExpander *expander,
const FilePath &wizardDir, const FilePath &wizardDir,
const FilePath &projectDir, const FilePath &projectDir,
QString *errorMessage) final; QString *errorMessage) final;
Utils::Result<> writeFile(const JsonWizard *wizard, Core::GeneratedFile *file) final; Result<> writeFile(const JsonWizard *wizard, Core::GeneratedFile *file) final;
private: private:
class File { class File {
@@ -53,8 +53,7 @@ private:
QList<JsonWizard::OptionDefinition> options; QList<JsonWizard::OptionDefinition> options;
}; };
Core::GeneratedFile generateFile(const File &file, MacroExpander *expander, Result<Core::GeneratedFile> generateFile(const File &file, MacroExpander *expander);
QString *errorMessage);
QList<File> m_fileList; QList<File> m_fileList;
@@ -109,13 +108,12 @@ Result<> JsonWizardFileGenerator::setup(const QVariant &data)
return ResultOk; return ResultOk;
} }
Core::GeneratedFile JsonWizardFileGenerator::generateFile(const File &file, Result<Core::GeneratedFile> JsonWizardFileGenerator::generateFile(const File &file, MacroExpander *expander)
MacroExpander *expander, QString *errorMessage)
{ {
// Read contents of source file // Read contents of source file
FileReader reader; FileReader reader;
if (!reader.fetch(file.source, errorMessage)) if (!reader.fetch(file.source))
return Core::GeneratedFile(); return ResultError(reader.errorString());
// Generate file information: // Generate file information:
Core::GeneratedFile gf; Core::GeneratedFile gf;
@@ -147,12 +145,12 @@ Core::GeneratedFile JsonWizardFileGenerator::generateFile(const File &file,
return expander->resolveMacro(n, ret); return expander->resolveMacro(n, ret);
}); });
QString errorMessage;
gf.setContents(TemplateEngine::processText(&nested, QString::fromUtf8(reader.text()), gf.setContents(TemplateEngine::processText(&nested, QString::fromUtf8(reader.text()),
errorMessage)); &errorMessage));
if (!errorMessage->isEmpty()) { if (!errorMessage.isEmpty()) {
*errorMessage = Tr::tr("When processing \"%1\":<br>%2") return ResultError(Tr::tr("When processing \"%1\":<br>%2")
.arg(file.source.toUserOutput(), *errorMessage); .arg(file.source.toUserOutput(), errorMessage));
return Core::GeneratedFile();
} }
} }
if (!file.source.isResourceFile()) // resource files mess up permissions, stay with default if (!file.source.isResourceFile()) // resource files mess up permissions, stay with default
@@ -233,11 +231,10 @@ Core::GeneratedFiles JsonWizardFileGenerator::fileList(MacroExpander *expander,
const Core::GeneratedFiles result const Core::GeneratedFiles result
= Utils::transform(fileList, [this, &expander, &errorMessage](const File &f) { = Utils::transform(fileList, [this, &expander, &errorMessage](const File &f) {
QString generateError; const Result<Core::GeneratedFile> file = generateFile(f, expander);
const Core::GeneratedFile file = generateFile(f, expander, &generateError); if (!file)
if (!generateError.isEmpty()) *errorMessage = file.error();
*errorMessage = generateError; return file.value();
return file;
}); });
if (Utils::contains(result, [](const Core::GeneratedFile &gf) { if (Utils::contains(result, [](const Core::GeneratedFile &gf) {