summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/cmake.cxx5
-rw-r--r--Source/cmake.h7
-rw-r--r--Source/cmakemain.cxx12
3 files changed, 17 insertions, 7 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 67a8e0174a..169bf9e6e7 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -3732,7 +3732,8 @@ std::function<int()> cmake::BuildWorkflowStep(
}
#endif
-int cmake::Workflow(const std::string& presetName, bool listPresets)
+int cmake::Workflow(const std::string& presetName,
+ WorkflowListPresets listPresets)
{
#ifndef CMAKE_BOOTSTRAP
this->SetHomeDirectory(cmSystemTools::GetCurrentWorkingDirectory());
@@ -3747,7 +3748,7 @@ int cmake::Workflow(const std::string& presetName, bool listPresets)
return 1;
}
- if (listPresets) {
+ if (listPresets == WorkflowListPresets::Yes) {
settingsFile.PrintWorkflowPresetList();
return 0;
}
diff --git a/Source/cmake.h b/Source/cmake.h
index 54d0bb5a13..b3b9f19de9 100644
--- a/Source/cmake.h
+++ b/Source/cmake.h
@@ -602,7 +602,12 @@ public:
bool Open(const std::string& dir, bool dryRun);
//! run the --workflow option
- int Workflow(const std::string& presetName, bool listPresets);
+ enum class WorkflowListPresets
+ {
+ No,
+ Yes,
+ };
+ int Workflow(const std::string& presetName, WorkflowListPresets listPresets);
void UnwatchUnusedCli(const std::string& var);
void WatchUnusedCli(const std::string& var);
diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx
index 15e319023f..a6938bc37b 100644
--- a/Source/cmakemain.cxx
+++ b/Source/cmakemain.cxx
@@ -917,8 +917,9 @@ int do_workflow(int ac, char const* const* av)
std::cerr << "This cmake does not support --workflow\n";
return -1;
#else
+ using WorkflowListPresets = cmake::WorkflowListPresets;
std::string presetName;
- bool listPresets = false;
+ auto listPresets = WorkflowListPresets::No;
using CommandArgument =
cmCommandLineArgument<bool(std::string const& value)>;
@@ -927,7 +928,10 @@ int do_workflow(int ac, char const* const* av)
CommandArgument{ "--preset", CommandArgument::Values::One,
CommandArgument::setToValue(presetName) },
CommandArgument{ "--list-presets", CommandArgument::Values::Zero,
- CommandArgument::setToTrue(listPresets) }
+ [&listPresets](const std::string&) -> bool {
+ listPresets = WorkflowListPresets::Yes;
+ return true;
+ } },
};
std::vector<std::string> inputArgs;
@@ -950,14 +954,14 @@ int do_workflow(int ac, char const* const* av)
if (!(matched && parsed)) {
if (!matched) {
presetName.clear();
- listPresets = false;
+ listPresets = WorkflowListPresets::No;
std::cerr << "Unknown argument " << arg << std::endl;
}
break;
}
}
- if (presetName.empty() && !listPresets) {
+ if (presetName.empty() && listPresets == WorkflowListPresets::No) {
/* clang-format off */
std::cerr <<
"Usage: cmake --workflow [options]\n"