1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-20 21:40:15 +08:00

cmake::Workflow: Refactor to use enum class argument

This commit is contained in:
Kyle Edwards
2022-10-25 10:59:19 -04:00
parent 322193afcd
commit 7d9aa0f00c
3 changed files with 17 additions and 7 deletions

View File

@@ -3732,7 +3732,8 @@ std::function<int()> cmake::BuildWorkflowStep(
} }
#endif #endif
int cmake::Workflow(const std::string& presetName, bool listPresets) int cmake::Workflow(const std::string& presetName,
WorkflowListPresets listPresets)
{ {
#ifndef CMAKE_BOOTSTRAP #ifndef CMAKE_BOOTSTRAP
this->SetHomeDirectory(cmSystemTools::GetCurrentWorkingDirectory()); this->SetHomeDirectory(cmSystemTools::GetCurrentWorkingDirectory());
@@ -3747,7 +3748,7 @@ int cmake::Workflow(const std::string& presetName, bool listPresets)
return 1; return 1;
} }
if (listPresets) { if (listPresets == WorkflowListPresets::Yes) {
settingsFile.PrintWorkflowPresetList(); settingsFile.PrintWorkflowPresetList();
return 0; return 0;
} }

View File

@@ -602,7 +602,12 @@ public:
bool Open(const std::string& dir, bool dryRun); bool Open(const std::string& dir, bool dryRun);
//! run the --workflow option //! 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 UnwatchUnusedCli(const std::string& var);
void WatchUnusedCli(const std::string& var); void WatchUnusedCli(const std::string& var);

View File

@@ -917,8 +917,9 @@ int do_workflow(int ac, char const* const* av)
std::cerr << "This cmake does not support --workflow\n"; std::cerr << "This cmake does not support --workflow\n";
return -1; return -1;
#else #else
using WorkflowListPresets = cmake::WorkflowListPresets;
std::string presetName; std::string presetName;
bool listPresets = false; auto listPresets = WorkflowListPresets::No;
using CommandArgument = using CommandArgument =
cmCommandLineArgument<bool(std::string const& value)>; 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{ "--preset", CommandArgument::Values::One,
CommandArgument::setToValue(presetName) }, CommandArgument::setToValue(presetName) },
CommandArgument{ "--list-presets", CommandArgument::Values::Zero, CommandArgument{ "--list-presets", CommandArgument::Values::Zero,
CommandArgument::setToTrue(listPresets) } [&listPresets](const std::string&) -> bool {
listPresets = WorkflowListPresets::Yes;
return true;
} },
}; };
std::vector<std::string> inputArgs; std::vector<std::string> inputArgs;
@@ -950,14 +954,14 @@ int do_workflow(int ac, char const* const* av)
if (!(matched && parsed)) { if (!(matched && parsed)) {
if (!matched) { if (!matched) {
presetName.clear(); presetName.clear();
listPresets = false; listPresets = WorkflowListPresets::No;
std::cerr << "Unknown argument " << arg << std::endl; std::cerr << "Unknown argument " << arg << std::endl;
} }
break; break;
} }
} }
if (presetName.empty() && !listPresets) { if (presetName.empty() && listPresets == WorkflowListPresets::No) {
/* clang-format off */ /* clang-format off */
std::cerr << std::cerr <<
"Usage: cmake --workflow [options]\n" "Usage: cmake --workflow [options]\n"