diff --git a/Source/cmCMakePresetsGraphInternal.h b/Source/cmCMakePresetsGraphInternal.h index 964ddfbdbd..c552ca47f9 100644 --- a/Source/cmCMakePresetsGraphInternal.h +++ b/Source/cmCMakePresetsGraphInternal.h @@ -9,9 +9,11 @@ #include #include +#include #include +#include "cmCMakePresetsErrors.h" #include "cmCMakePresetsGraph.h" #include "cmJSONHelpers.h" #include "cmSystemTools.h" @@ -327,4 +329,41 @@ cmJSONHelper SchemaHelper(); bool CheckDiagnostics(cmJSONState* state, int version, cmCMakePresetsGraph::ConfigurePreset& preset); + +// Binds the fields common to every preset kind. +template +cmJSONHelperBuilder::Object BindPresetIdentityFields( + cmJSONHelperBuilder::Object obj) +{ + obj.Bind("name"_s, &cmCMakePresetsGraph::Preset::Name, PresetNameHelper) + .Bind("inherits"_s, &cmCMakePresetsGraph::Preset::Inherits, + PresetVectorOneOrMoreStringHelper, false) + .Bind("hidden"_s, &cmCMakePresetsGraph::Preset::Hidden, PresetBoolHelper, + false) + .template Bind( + "vendor"_s, nullptr, VendorHelper(cmCMakePresetsErrors::INVALID_PRESET), + false) + .Bind("displayName"_s, &cmCMakePresetsGraph::Preset::DisplayName, + PresetStringHelper, false) + .Bind("description"_s, &cmCMakePresetsGraph::Preset::Description, + PresetStringHelper, false) + .Bind("condition"_s, &cmCMakePresetsGraph::Preset::ConditionEvaluator, + PresetConditionHelper, false); + return obj; +} + +// Binds the fields shared by build, test, and package presets, which resolve +// against a configure preset. +template +cmJSONHelperBuilder::Object BindDependentPresetFields( + cmJSONHelperBuilder::Object obj) +{ + obj + .Bind("environment"_s, &cmCMakePresetsGraph::Preset::Environment, + EnvironmentMapHelper, false) + .Bind("configurePreset"_s, &T::ConfigurePreset, PresetStringHelper, false) + .Bind("inheritConfigureEnvironment"_s, &T::InheritConfigureEnvironment, + PresetOptionalBoolHelper, false); + return obj; +} } diff --git a/Source/cmCMakePresetsGraphReadJSONBuildPresets.cxx b/Source/cmCMakePresetsGraphReadJSONBuildPresets.cxx index cadbcd1e27..afa3555169 100644 --- a/Source/cmCMakePresetsGraphReadJSONBuildPresets.cxx +++ b/Source/cmCMakePresetsGraphReadJSONBuildPresets.cxx @@ -1,9 +1,6 @@ /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ -#include #include -#include -#include #include #include @@ -58,30 +55,10 @@ std::function const }; auto const BuildPresetHelper = - JSONHelperBuilder::Object( - cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false) - .Bind("name"_s, &BuildPreset::Name, - cmCMakePresetsGraphInternal::PresetNameHelper) - .Bind("inherits"_s, &BuildPreset::Inherits, - cmCMakePresetsGraphInternal::PresetVectorOneOrMoreStringHelper, - false) - .Bind("hidden"_s, &BuildPreset::Hidden, - cmCMakePresetsGraphInternal::PresetBoolHelper, false) - .Bind("vendor"_s, nullptr, - cmCMakePresetsGraphInternal::VendorHelper( - cmCMakePresetsErrors::INVALID_PRESET), - false) - .Bind("displayName"_s, &BuildPreset::DisplayName, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("description"_s, &BuildPreset::Description, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("environment"_s, &BuildPreset::Environment, - cmCMakePresetsGraphInternal::EnvironmentMapHelper, false) - .Bind("configurePreset"_s, &BuildPreset::ConfigurePreset, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("inheritConfigureEnvironment"_s, - &BuildPreset::InheritConfigureEnvironment, - cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false) + cmCMakePresetsGraphInternal::BindDependentPresetFields( + cmCMakePresetsGraphInternal::BindPresetIdentityFields( + JSONHelperBuilder::Object( + cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false))) .Bind("jobs"_s, &BuildPreset::Jobs, cmCMakePresetsGraphInternal::PresetOptionalUIntHelper, false) .Bind("targets"_s, &BuildPreset::Targets, @@ -95,8 +72,6 @@ auto const BuildPresetHelper = cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false) .Bind("nativeToolOptions"_s, &BuildPreset::NativeToolOptions, cmCMakePresetsGraphInternal::PresetVectorStringHelper, false) - .Bind("condition"_s, &BuildPreset::ConditionEvaluator, - cmCMakePresetsGraphInternal::PresetConditionHelper, false) .Bind("resolvePackageReferences"_s, ResolvePackageReferencesHelper, false); } diff --git a/Source/cmCMakePresetsGraphReadJSONConfigurePresets.cxx b/Source/cmCMakePresetsGraphReadJSONConfigurePresets.cxx index 05834356b5..ad4e1bd35e 100644 --- a/Source/cmCMakePresetsGraphReadJSONConfigurePresets.cxx +++ b/Source/cmCMakePresetsGraphReadJSONConfigurePresets.cxx @@ -1,10 +1,8 @@ /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #include -#include #include #include -#include #include #include #include @@ -285,23 +283,9 @@ auto const PresetTraceHelper = cmCMakePresetsGraphInternal::PresetStringHelper, false); auto const ConfigurePresetHelper = - JSONHelperBuilder::Object( - cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false) - .Bind("name"_s, &ConfigurePreset::Name, - cmCMakePresetsGraphInternal::PresetNameHelper) - .Bind("inherits"_s, &ConfigurePreset::Inherits, - cmCMakePresetsGraphInternal::PresetVectorOneOrMoreStringHelper, - false) - .Bind("hidden"_s, &ConfigurePreset::Hidden, - cmCMakePresetsGraphInternal::PresetBoolHelper, false) - .Bind("vendor"_s, nullptr, - cmCMakePresetsGraphInternal::VendorHelper( - cmCMakePresetsErrors::INVALID_PRESET), - false) - .Bind("displayName"_s, &ConfigurePreset::DisplayName, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("description"_s, &ConfigurePreset::Description, - cmCMakePresetsGraphInternal::PresetStringHelper, false) + cmCMakePresetsGraphInternal::BindPresetIdentityFields( + JSONHelperBuilder::Object( + cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)) .Bind("generator"_s, &ConfigurePreset::Generator, cmCMakePresetsGraphInternal::PresetStringHelper, false) .Bind("architecture"_s, ArchitectureHelper, false) @@ -323,9 +307,7 @@ auto const ConfigurePresetHelper = .Bind("warnings"_s, PresetWarningsHelper, false) .Bind("errors"_s, PresetErrorsHelper, false) .Bind("debug"_s, PresetDebugHelper, false) - .Bind("trace"_s, PresetTraceHelper, false) - .Bind("condition"_s, &ConfigurePreset::ConditionEvaluator, - cmCMakePresetsGraphInternal::PresetConditionHelper, false); + .Bind("trace"_s, PresetTraceHelper, false); } namespace cmCMakePresetsGraphInternal { diff --git a/Source/cmCMakePresetsGraphReadJSONPackagePresets.cxx b/Source/cmCMakePresetsGraphReadJSONPackagePresets.cxx index 2fec3ae290..89b91de529 100644 --- a/Source/cmCMakePresetsGraphReadJSONPackagePresets.cxx +++ b/Source/cmCMakePresetsGraphReadJSONPackagePresets.cxx @@ -1,9 +1,7 @@ /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ -#include #include #include -#include #include #include @@ -36,30 +34,10 @@ auto const VariablesHelper = cmJSONHelperBuilder::Map( cmCMakePresetsErrors::INVALID_VARIABLE, VariableHelper); auto const PackagePresetHelper = - cmJSONHelperBuilder::Object( - cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false) - .Bind("name"_s, &PackagePreset::Name, - cmCMakePresetsGraphInternal::PresetNameHelper) - .Bind("inherits"_s, &PackagePreset::Inherits, - cmCMakePresetsGraphInternal::PresetVectorOneOrMoreStringHelper, - false) - .Bind("hidden"_s, &PackagePreset::Hidden, - cmCMakePresetsGraphInternal::PresetBoolHelper, false) - .Bind("vendor"_s, nullptr, - cmCMakePresetsGraphInternal::VendorHelper( - cmCMakePresetsErrors::INVALID_PRESET), - false) - .Bind("displayName"_s, &PackagePreset::DisplayName, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("description"_s, &PackagePreset::Description, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("environment"_s, &PackagePreset::Environment, - cmCMakePresetsGraphInternal::EnvironmentMapHelper, false) - .Bind("configurePreset"_s, &PackagePreset::ConfigurePreset, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("inheritConfigureEnvironment"_s, - &PackagePreset::InheritConfigureEnvironment, - cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false) + cmCMakePresetsGraphInternal::BindDependentPresetFields( + cmCMakePresetsGraphInternal::BindPresetIdentityFields( + cmJSONHelperBuilder::Object( + cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false))) .Bind("generators"_s, &PackagePreset::Generators, cmCMakePresetsGraphInternal::PresetVectorStringHelper, false) .Bind("configurations"_s, &PackagePreset::Configurations, @@ -75,9 +53,7 @@ auto const PackagePresetHelper = .Bind("packageDirectory"_s, &PackagePreset::PackageDirectory, cmCMakePresetsGraphInternal::PresetStringHelper, false) .Bind("vendorName"_s, &PackagePreset::VendorName, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("condition"_s, &PackagePreset::ConditionEvaluator, - cmCMakePresetsGraphInternal::PresetConditionHelper, false); + cmCMakePresetsGraphInternal::PresetStringHelper, false); } namespace cmCMakePresetsGraphInternal { diff --git a/Source/cmCMakePresetsGraphReadJSONTestPresets.cxx b/Source/cmCMakePresetsGraphReadJSONTestPresets.cxx index 68e58718b1..d75ecf14a9 100644 --- a/Source/cmCMakePresetsGraphReadJSONTestPresets.cxx +++ b/Source/cmCMakePresetsGraphReadJSONTestPresets.cxx @@ -1,9 +1,6 @@ /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ -#include #include -#include -#include #include #include @@ -368,30 +365,10 @@ auto const TestPresetFilterHelper = TestPresetOptionalFilterExcludeHelper, false)); auto const TestPresetHelper = - JSONHelperBuilder::Object( - cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false) - .Bind("name"_s, &TestPreset::Name, - cmCMakePresetsGraphInternal::PresetNameHelper) - .Bind("inherits"_s, &TestPreset::Inherits, - cmCMakePresetsGraphInternal::PresetVectorOneOrMoreStringHelper, - false) - .Bind("hidden"_s, &TestPreset::Hidden, - cmCMakePresetsGraphInternal::PresetBoolHelper, false) - .Bind("vendor"_s, nullptr, - cmCMakePresetsGraphInternal::VendorHelper( - cmCMakePresetsErrors::INVALID_PRESET), - false) - .Bind("displayName"_s, &TestPreset::DisplayName, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("description"_s, &TestPreset::Description, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("environment"_s, &TestPreset::Environment, - cmCMakePresetsGraphInternal::EnvironmentMapHelper, false) - .Bind("configurePreset"_s, &TestPreset::ConfigurePreset, - cmCMakePresetsGraphInternal::PresetStringHelper, false) - .Bind("inheritConfigureEnvironment"_s, - &TestPreset::InheritConfigureEnvironment, - cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false) + cmCMakePresetsGraphInternal::BindDependentPresetFields( + cmCMakePresetsGraphInternal::BindPresetIdentityFields( + JSONHelperBuilder::Object( + cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false))) .Bind("configuration"_s, &TestPreset::Configuration, cmCMakePresetsGraphInternal::PresetStringHelper, false) .Bind("overwriteConfigurationFile"_s, @@ -401,9 +378,7 @@ auto const TestPresetHelper = false) .Bind("filter"_s, &TestPreset::Filter, TestPresetFilterHelper, false) .Bind("execution"_s, &TestPreset::Execution, TestPresetExecutionHelper, - false) - .Bind("condition"_s, &TestPreset::ConditionEvaluator, - cmCMakePresetsGraphInternal::PresetConditionHelper, false); + false); } namespace cmCMakePresetsGraphInternal {