// Copyright Epic Games, Inc. All Rights Reserved. using System.Collections.Generic; using EpicGames.Core; using Microsoft.Extensions.Logging; namespace EpicGames.Horde.Issues.Handlers { /// /// Instance of a particular BuildGraph script error /// [IssueHandler] public class BuildGraphIssueHandler : IssueHandler { readonly List _issues = new List(); /// public override int Priority => 10; /// /// Determines if the given event id matches /// /// The event id to compare /// True if the given event id matches public static bool IsMatchingEventId(EventId eventId) { return eventId == KnownLogEvents.AutomationTool_BuildGraphScript; } static bool IsMaskedEventId(EventId id) => id == KnownLogEvents.ExitCode || id == KnownLogEvents.Systemic_Xge_BuildFailed; /// public override bool HandleEvent(IssueEvent issueEvent) { if (issueEvent.EventId.HasValue) { EventId eventId = issueEvent.EventId.Value; if (IsMatchingEventId(eventId)) { IssueEventGroup issue = new IssueEventGroup("BuildGraph", "BuildGraph {Severity} in {Files}", IssueChangeFilter.All); issue.Events.Add(issueEvent); issue.Keys.AddSourceFiles(issueEvent); _issues.Add(issue); return true; } else if (_issues.Count > 0 && IsMaskedEventId(eventId)) { return true; } } return false; } /// public override IEnumerable GetIssues() => _issues; } }