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;
}
}
}