From 7d9aa0f00cd9f7c2ed3d0c710090e9901c4430e9 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Tue, 25 Oct 2022 10:59:19 -0400 Subject: cmake::Workflow: Refactor to use enum class argument --- Source/cmake.cxx | 5 +++-- Source/cmake.h | 7 ++++++- Source/cmakemain.cxx | 12 ++++++++---- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 67a8e01..169bf9e 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -3732,7 +3732,8 @@ std::function 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 54d0bb5..b3b9f19 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 15e3190..a6938bc 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; @@ -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 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" -- cgit v0.12