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