presets: Extend ResolvePreset to workflow presets

Replace the inline workflow preset lookup and validation with the
shared utilities used by the other preset types, from commit e99fbf4100
(Presets: Extract ResolvePreset utility for preset resolution,
2026-04-21, v4.4.0-rc1~284^2).
This commit is contained in:
Tyler Yankee committed 2026-11-01 13:47:06 -05:00
1 parent 8e91f7aa9b
commit 2603725ccc
3 files changed
+33 -30

No files matched your search

+13
View File
@@ -562,6 +562,14 @@ cmCMakePresetsGraph::ResolvePreset(
cmCMakePresetsGraph::PresetPair<
cmCMakePresetsGraph::PackagePreset>> const&) const;
extern template cmCMakePresetsGraph::PresetResolveResult<
cmCMakePresetsGraph::WorkflowPreset>
cmCMakePresetsGraph::ResolvePreset(
std::string const&,
std::map<std::string,
cmCMakePresetsGraph::PresetPair<
cmCMakePresetsGraph::WorkflowPreset>> const&) const;
extern template cm::optional<std::string>
cmCMakePresetsGraph::FormatPresetError<cmCMakePresetsGraph::ConfigurePreset>(
cmCMakePresetsGraph::PresetResolveStatus, std::string const&,
@@ -581,3 +589,8 @@ extern template cm::optional<std::string>
cmCMakePresetsGraph::FormatPresetError<cmCMakePresetsGraph::PackagePreset>(
cmCMakePresetsGraph::PresetResolveStatus, std::string const&,
std::string const&);
extern template cm::optional<std::string>
cmCMakePresetsGraph::FormatPresetError<cmCMakePresetsGraph::WorkflowPreset>(
cmCMakePresetsGraph::PresetResolveStatus, std::string const&,
std::string const&);
+11
View File
@@ -72,6 +72,13 @@ cmCMakePresetsGraph::ResolvePreset(
std::map<std::string, PresetPair<cmCMakePresetsGraph::PackagePreset>> const&)
const;
template cmCMakePresetsGraph::PresetResolveResult<
cmCMakePresetsGraph::WorkflowPreset>
cmCMakePresetsGraph::ResolvePreset(
std::string const&,
std::map<std::string,
PresetPair<cmCMakePresetsGraph::WorkflowPreset>> const&) const;
template <class T>
cm::optional<std::string> cmCMakePresetsGraph::FormatPresetError(
PresetResolveStatus status, std::string const& errorPresetName,
@@ -114,3 +121,7 @@ cmCMakePresetsGraph::FormatPresetError<cmCMakePresetsGraph::TestPreset>(
template cm::optional<std::string>
cmCMakePresetsGraph::FormatPresetError<cmCMakePresetsGraph::PackagePreset>(
PresetResolveStatus, std::string const&, std::string const&);
template cm::optional<std::string>
cmCMakePresetsGraph::FormatPresetError<cmCMakePresetsGraph::WorkflowPreset>(
PresetResolveStatus, std::string const&, std::string const&);
+9 -30
View File
@@ -4462,39 +4462,18 @@ int cmake::Workflow(cmCMakePresetsWorkflowArgs const& args)
return 0;
}
auto presetPair = settingsFile.WorkflowPresets.find(args.PresetName);
if (presetPair == settingsFile.WorkflowPresets.end()) {
cmSystemTools::Error(cmStrCat("No such workflow preset in ",
this->GetHomeDirectory(), ": \"",
args.PresetName, '"'));
settingsFile.PrintWorkflowPresetList();
return 1;
}
if (presetPair->second.Unexpanded.Hidden) {
cmSystemTools::Error(cmStrCat("Cannot use hidden workflow preset in ",
this->GetHomeDirectory(), ": \"",
args.PresetName, '"'));
settingsFile.PrintWorkflowPresetList();
return 1;
}
auto const& expandedPreset = presetPair->second.Expanded;
if (!expandedPreset) {
cmSystemTools::Error(cmStrCat("Could not evaluate workflow preset \"",
args.PresetName,
"\": Invalid macro expansion"));
settingsFile.PrintWorkflowPresetList();
return 1;
}
if (!expandedPreset->ConditionResult) {
cmSystemTools::Error(cmStrCat("Cannot use disabled workflow preset in ",
this->GetHomeDirectory(), ": \"",
args.PresetName, '"'));
auto resolveResult =
settingsFile.ResolvePreset(args.PresetName, settingsFile.WorkflowPresets);
auto resolveError = cmCMakePresetsGraph::FormatPresetError<
cmCMakePresetsGraph::WorkflowPreset>(resolveResult.StatusCode,
resolveResult.ErrorPresetName,
this->GetHomeDirectory());
if (resolveError) {
cmSystemTools::Error(*resolveError);
settingsFile.PrintWorkflowPresetList();
return 1;
}
auto const* expandedPreset = resolveResult.Preset;
struct CalculatedStep
{