private void UpdateVersionGlobalJson(DependencyDetail itemToUpdate, JToken token) { string versionElementName = VersionFiles.CalculateGlobalJsonElementName(itemToUpdate.Name); foreach (JProperty property in token.Children <JProperty>()) { if (property.Name == versionElementName) { property.Value = new JValue(itemToUpdate.Version); break; } UpdateVersionGlobalJson(itemToUpdate, property.Value); } }
/// <summary> /// Verify that any dependency that exists in global.json and Version.Details.xml (e.g. Arcade SDK) /// has matching version numbers. /// </summary> /// <param name="dependencies">Parsed dependencies in the repository.</param> /// <param name="rootToken">Root global.json token.</param> /// <returns></returns> private Task <bool> VerifyMatchingGlobalJson( IEnumerable <DependencyDetail> dependencies, JObject rootToken, out Task <HashSet <string> > utilizedDependencies) { HashSet <string> utilizedSet = new HashSet <string>(); bool result = true; foreach (var dependency in dependencies) { string versionedName = VersionFiles.CalculateGlobalJsonElementName(dependency.Name); JToken dependencyNode = FindDependency(rootToken, versionedName); if (dependencyNode != null) { // Should be a string with matching version. if (dependencyNode.Type != JTokenType.Property || ((JProperty)dependencyNode).Value.Type != JTokenType.String) { _logger.LogError($"The element '{dependency.Name}' in '{VersionFiles.GlobalJson}' should be a property " + $"with a value of type string."); result = false; continue; } JProperty property = (JProperty)dependencyNode; // Validate that the casing matches for consistency if (property.Name != versionedName) { _logger.LogError($"The dependency '{dependency.Name}' has a case mismatch between " + $"'{VersionFiles.GlobalJson}' and '{VersionFiles.VersionDetailsXml}' " + $"('{property.Name}' vs. '{versionedName}')"); result = false; } // Validate version JToken value = (JToken)property.Value; if (value.Value <string>() != dependency.Version) { _logger.LogError($"The dependency '{dependency.Name}' has a version mismatch between " + $"'{VersionFiles.GlobalJson}' and '{VersionFiles.VersionDetailsXml}' " + $"('{value.Value<string>()}' vs. '{dependency.Version}')"); } utilizedSet.Add(dependency.Name); } } utilizedDependencies = Task.FromResult(utilizedSet); return(Task.FromResult(result)); }