/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #include #include #include #include #include #include #include "cmCMakePresetsGraph.h" #include "cmCMakePresetsGraphInternal.h" #include "cmJSONHelpers.h" namespace { using ReadFileResult = cmCMakePresetsGraph::ReadFileResult; using WorkflowPreset = cmCMakePresetsGraph::WorkflowPreset; ReadFileResult WorkflowStepTypeHelper(WorkflowPreset::WorkflowStep::Type& out, const Json::Value* value) { if (!value) { return ReadFileResult::INVALID_PRESET; } if (!value->isString()) { return ReadFileResult::INVALID_PRESET; } if (value->asString() == "configure") { out = WorkflowPreset::WorkflowStep::Type::Configure; return ReadFileResult::READ_OK; } if (value->asString() == "build") { out = WorkflowPreset::WorkflowStep::Type::Build; return ReadFileResult::READ_OK; } if (value->asString() == "test") { out = WorkflowPreset::WorkflowStep::Type::Test; return ReadFileResult::READ_OK; } if (value->asString() == "package") { out = WorkflowPreset::WorkflowStep::Type::Package; return ReadFileResult::READ_OK; } return ReadFileResult::INVALID_PRESET; } auto const WorkflowStepHelper = cmJSONHelperBuilder::Object( ReadFileResult::READ_OK, ReadFileResult::INVALID_PRESET, false) .Bind("type"_s, &WorkflowPreset::WorkflowStep::PresetType, WorkflowStepTypeHelper) .Bind("name"_s, &WorkflowPreset::WorkflowStep::PresetName, cmCMakePresetsGraphInternal::PresetStringHelper); auto const WorkflowStepsHelper = cmJSONHelperBuilder::Vector( ReadFileResult::READ_OK, ReadFileResult::INVALID_PRESET, WorkflowStepHelper); auto const WorkflowPresetHelper = cmJSONHelperBuilder::Object( ReadFileResult::READ_OK, ReadFileResult::INVALID_PRESET, false) .Bind("name"_s, &WorkflowPreset::Name, cmCMakePresetsGraphInternal::PresetStringHelper) .Bind("vendor"_s, nullptr, cmCMakePresetsGraphInternal::VendorHelper( ReadFileResult::INVALID_PRESET), false) .Bind("displayName"_s, &WorkflowPreset::DisplayName, cmCMakePresetsGraphInternal::PresetStringHelper, false) .Bind("description"_s, &WorkflowPreset::Description, cmCMakePresetsGraphInternal::PresetStringHelper, false) .Bind("steps"_s, &WorkflowPreset::Steps, WorkflowStepsHelper); } namespace cmCMakePresetsGraphInternal { cmCMakePresetsGraph::ReadFileResult WorkflowPresetsHelper( std::vector& out, const Json::Value* value) { static auto const helper = cmJSONHelperBuilder::Vector( ReadFileResult::READ_OK, ReadFileResult::INVALID_PRESETS, WorkflowPresetHelper); return helper(out, value); } }