using System; using System.Diagnostics; using System.Linq; using JetBrains.Annotations; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; using Sda.ModelIdUpdater; namespace Sda.Build.Tasks { /// /// Kiegészít egy XMI modellt úgy, hogy minden elemnek egyedi ID-ja legyen. /// public sealed class UpdateIds : Task { /// /// A módosítandó XML modell állomány neve. /// [CanBeNull, Required] public string Input { get; set; } [CanBeNull] public ITaskItem[] Packages { get; set; } public override bool Execute() { Updater updater = new Updater(); updater.LogMessageHandler += (sender, e) => { if (e == null || string.IsNullOrWhiteSpace(e.Message)) { return; } if (Packages != null && Packages.Length > 0 && !string.IsNullOrWhiteSpace(e.Package) && !Packages.Any(p => string.Equals(p.ItemSpec, e.Package, StringComparison.OrdinalIgnoreCase))) { return; } switch (e.EventType) { case TraceEventType.Error: this.LogError(e.Message); break; case TraceEventType.Warning: this.LogWarning(e.Message); break; default: this.LogInfo(e.Message); break; } }; updater.UpdateIds(Input); return true; } } }