File: src\CompareVersions.cs
Web Access
Project: src\src\Microsoft.DotNet.Arcade.Sdk\Microsoft.DotNet.Arcade.Sdk.csproj (Microsoft.DotNet.Arcade.Sdk)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using NuGet.Versioning;
 
namespace Microsoft.DotNet.Arcade.Sdk
{
    public class CompareVersions : Microsoft.Build.Utilities.Task
    {
        [Required]
        public string Left { get; set; }
 
        [Required]
        public string Right { get; set; }
 
        [Output]
        public int Result { get; set; }
 
        public override bool Execute()
        {
            ExecuteImpl();
            return !Log.HasLoggedErrors;
        }
 
        private void ExecuteImpl()
        {
            if (!SemanticVersion.TryParse(Left, out var left))
            {
                Log.LogError($"Invalid version: '{Left}'");
                return;
            }
 
            if (!SemanticVersion.TryParse(Right, out var right))
            {
                Log.LogError($"Invalid version: '{Right}'");
                return;
            }
 
            Result = left.CompareTo(right);
        }
    }
}