Coverage Report

Created: 2026-02-09 06:05

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/CMake/Source/cmCMakePresetsGraphReadJSONPackagePresets.cxx
Line
Count
Source
1
/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2
   file LICENSE.rst or https://cmake.org/licensing for details.  */
3
#include <cstddef>
4
#include <functional>
5
#include <map>
6
#include <memory>
7
#include <string>
8
#include <vector>
9
10
#include <cm/optional>
11
#include <cmext/string_view>
12
13
#include <cm3p/json/value.h>
14
15
#include "cmCMakePresetsErrors.h"
16
#include "cmCMakePresetsGraph.h"
17
#include "cmCMakePresetsGraphInternal.h"
18
#include "cmJSONHelpers.h"
19
#include "cmJSONState.h"
20
21
namespace {
22
using PackagePreset = cmCMakePresetsGraph::PackagePreset;
23
24
auto const OutputHelper =
25
  cmJSONHelperBuilder::Object<PackagePreset>(
26
    JsonErrors::INVALID_NAMED_OBJECT_KEY, false)
27
    .Bind("debug"_s, &PackagePreset::DebugOutput,
28
          cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false)
29
    .Bind("verbose"_s, &PackagePreset::VerboseOutput,
30
          cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false);
31
32
auto const VariableHelper =
33
  cmJSONHelperBuilder::String(cmCMakePresetsErrors::INVALID_VARIABLE);
34
35
auto const VariablesHelper = cmJSONHelperBuilder::Map<std::string>(
36
  cmCMakePresetsErrors::INVALID_VARIABLE, VariableHelper);
37
38
auto const PackagePresetHelper =
39
  cmJSONHelperBuilder::Object<PackagePreset>(
40
    cmCMakePresetsErrors::INVALID_PRESET_OBJECT, false)
41
    .Bind("name"_s, &PackagePreset::Name,
42
          cmCMakePresetsGraphInternal::PresetNameHelper)
43
    .Bind("inherits"_s, &PackagePreset::Inherits,
44
          cmCMakePresetsGraphInternal::PresetVectorOneOrMoreStringHelper,
45
          false)
46
    .Bind("hidden"_s, &PackagePreset::Hidden,
47
          cmCMakePresetsGraphInternal::PresetBoolHelper, false)
48
    .Bind<std::nullptr_t>("vendor"_s, nullptr,
49
                          cmCMakePresetsGraphInternal::VendorHelper(
50
                            cmCMakePresetsErrors::INVALID_PRESET),
51
                          false)
52
    .Bind("displayName"_s, &PackagePreset::DisplayName,
53
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
54
    .Bind("description"_s, &PackagePreset::Description,
55
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
56
    .Bind("environment"_s, &PackagePreset::Environment,
57
          cmCMakePresetsGraphInternal::EnvironmentMapHelper, false)
58
    .Bind("configurePreset"_s, &PackagePreset::ConfigurePreset,
59
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
60
    .Bind("inheritConfigureEnvironment"_s,
61
          &PackagePreset::InheritConfigureEnvironment,
62
          cmCMakePresetsGraphInternal::PresetOptionalBoolHelper, false)
63
    .Bind("generators"_s, &PackagePreset::Generators,
64
          cmCMakePresetsGraphInternal::PresetVectorStringHelper, false)
65
    .Bind("configurations"_s, &PackagePreset::Configurations,
66
          cmCMakePresetsGraphInternal::PresetVectorStringHelper, false)
67
    .Bind("variables"_s, &PackagePreset::Variables, VariablesHelper, false)
68
    .Bind("configFile"_s, &PackagePreset::ConfigFile,
69
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
70
    .Bind("output"_s, OutputHelper, false)
71
    .Bind("packageName"_s, &PackagePreset::PackageName,
72
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
73
    .Bind("packageVersion"_s, &PackagePreset::PackageVersion,
74
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
75
    .Bind("packageDirectory"_s, &PackagePreset::PackageDirectory,
76
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
77
    .Bind("vendorName"_s, &PackagePreset::VendorName,
78
          cmCMakePresetsGraphInternal::PresetStringHelper, false)
79
    .Bind("condition"_s, &PackagePreset::ConditionEvaluator,
80
          cmCMakePresetsGraphInternal::PresetConditionHelper, false);
81
}
82
83
namespace cmCMakePresetsGraphInternal {
84
bool PackagePresetsHelper(std::vector<cmCMakePresetsGraph::PackagePreset>& out,
85
                          Json::Value const* value, cmJSONState* state)
86
0
{
87
0
  static auto const helper = cmJSONHelperBuilder::Vector<PackagePreset>(
88
0
    cmCMakePresetsErrors::INVALID_PRESETS, PackagePresetHelper);
89
90
0
  return helper(out, value, state);
91
0
}
92
}