sdk/Sdk/Tasks/EnhanceExtensionsMetadata.cs (37 lines of code) (raw):

// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.Json; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; namespace Microsoft.Azure.Functions.Worker.Sdk.Tasks { #if NET472 [LoadInSeparateAppDomain] public class EnhanceExtensionsMetadata : AppDomainIsolatedTask #else public class EnhanceExtensionsMetadata : Task #endif { private static readonly JsonSerializerOptions _serializerOptions = new JsonSerializerOptions { WriteIndented = true }; [Required] public string? ExtensionsJsonPath { get; set; } [Required] public string? OutputPath { get; set; } public ITaskItem[]? AdditionalExtensions { get; set; } public override bool Execute() { string json = File.ReadAllText(ExtensionsJsonPath); var extensionsMetadata = JsonSerializer.Deserialize<ExtensionsMetadata>(json) ?? new ExtensionsMetadata(); ExtensionsMetadataEnhancer.AddHintPath(extensionsMetadata.Extensions); foreach (ITaskItem item in AdditionalExtensions ?? Enumerable.Empty<ITaskItem>()) { extensionsMetadata.Extensions.AddRange(ExtensionsMetadataEnhancer.GetWebJobsExtensions(item.ItemSpec)); } string newJson = JsonSerializer.Serialize(extensionsMetadata, _serializerOptions); File.WriteAllText(OutputPath, newJson); return true; } } }