MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / ParseExtensionConfigs

Function ParseExtensionConfigs

env/env_yaml.cc:162–214  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

160}
161
162absl::Status ParseExtensionConfigs(Config& config, absl::string_view yaml,
163 const YAML::Node& root) {
164 const YAML::Node extensions = root["extensions"];
165 if (!extensions.IsDefined()) {
166 return absl::OkStatus();
167 }
168 if (!extensions.IsSequence()) {
169 return YamlError(yaml, extensions, "Node 'extensions' is not a sequence");
170 }
171
172 for (const YAML::Node& extension : extensions) {
173 if (!extension || !extension.IsMap()) {
174 return YamlError(yaml, extension, "Extension is not a map");
175 }
176 const YAML::Node name = extension["name"];
177 if (!name || !name.IsScalar()) {
178 return YamlError(yaml, name, "Extension name is not a string");
179 }
180 std::string name_str = GetString(yaml, name);
181
182 const YAML::Node version = extension["version"];
183 std::string version_str = GetString(yaml, version);
184 int extension_version;
185 if (version.IsDefined()) {
186 bool is_valid_version = false;
187 if (version.IsScalar()) {
188 if (version_str == "latest") {
189 extension_version = Config::ExtensionConfig::kLatest;
190 is_valid_version = true;
191 } else {
192 if (absl::SimpleAtoi(version_str, &extension_version) &&
193 extension_version >= 0) {
194 is_valid_version = true;
195 }
196 }
197 }
198 if (!is_valid_version) {
199 return YamlError(
200 yaml, version,
201 absl::StrCat("Extension '", name_str,
202 "' version is not a valid number or 'latest'"));
203 }
204 } else {
205 extension_version = Config::ExtensionConfig::kLatest;
206 }
207 absl::Status add_status =
208 config.AddExtensionConfig(name_str, extension_version);
209 if (!add_status.ok()) {
210 return YamlError(yaml, extension, add_status.message());
211 }
212 }
213 return absl::OkStatus();
214}
215
216absl::StatusOr<absl::flat_hash_set<std::string>> ParseMacroList(
217 absl::string_view yaml, const YAML::Node& standard_library,

Callers 1

EnvConfigFromYamlFunction · 0.85

Calls 6

YamlErrorFunction · 0.85
GetStringFunction · 0.85
AddExtensionConfigMethod · 0.80
messageMethod · 0.80
IsMapMethod · 0.45
okMethod · 0.45

Tested by

no test coverage detected