File: NuGetMessageTask.cs
Web Access
Project: src\src\nuget-client\src\NuGet.Core\NuGet.Build.Tasks\NuGet.Build.Tasks.csproj (NuGet.Build.Tasks)
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

#nullable disable

using System;
using Microsoft.Build.Framework;
using Task = Microsoft.Build.Utilities.Task;

namespace NuGet.Build.Tasks
{
    /// <summary>
    /// A task that logs a message from the localized <see cref="Strings"/> resource.
    /// </summary>
    public sealed class NuGetMessageTask : Task
    {
        [Required]
        public string Name { get; set; }

        public string[] Args { get; set; }

        public string Importance { get; set; } = nameof(MessageImportance.Normal);

        public NuGetMessageTask()
            : base(Strings.ResourceManager)
        {
        }

        public override bool Execute()
        {
            if (!Enum.TryParse(Importance, ignoreCase: true, out MessageImportance messageImportance))
            {
                // MessageImportance defaults to High since its the zero value in the enum, instead default to Normal
                messageImportance = MessageImportance.Normal;
            }

            Log.LogMessageFromResources(messageImportance, Name, Args);

            return true;
        }
    }
}