forked from qt-creator/qt-creator
ProjectExplorer: Use Result in JsonWizardFileGenerator
Change-Id: I068c4a22099f406142e24a528eba61be147e10a5 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -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) {
|
||||||
|
Reference in New Issue
Block a user