File: GenPartialFacadeSource.cs
Web Access
Project: Microsoft.DotNet.GenFacades.csproj (Microsoft.DotNet.GenFacades)
// 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 Microsoft.DotNet.Build.Tasks;
using System;
using System.Linq;

namespace Microsoft.DotNet.GenFacades;

public class GenPartialFacadeSource : RoslynBuildTask
{
    [Required]
    public ITaskItem[] ReferencePaths { get; set; }

    [Required]
    public string ReferenceAssembly { get; set; }

    public ITaskItem[] CompileFiles { get; set; }

    public string DefineConstants { get; set; }

    public string LangVersion { get; set; }

    public bool IgnoreMissingTypes { get; set; }

    public string[] IgnoreMissingTypesList { get; set; }

    public string[] OmitTypes { get; set; }

    public ITaskItem[] SeedTypePreferences { get; set; }

    [Required]
    public string OutputSourcePath { get; set; }
    
    public override bool ExecuteCore()
    {
        bool result = true;
        try
        {
            result = GenPartialFacadeSourceGenerator.Execute(
                ReferencePaths?.Select(item => item.ItemSpec).ToArray(),
                ReferenceAssembly,
                CompileFiles?.Select(item => item.ItemSpec).ToArray(),
                DefineConstants,
                LangVersion,
                OutputSourcePath,
                Log,
                IgnoreMissingTypes,
                IgnoreMissingTypesList,
                OmitTypes,
                SeedTypePreferences);
        }
        catch (Exception e)
        {
            Log.LogErrorFromException(e, showStackTrace: false);
        }

        return result && !Log.HasLoggedErrors;
    }
}