64 lines
1.9 KiB
C#
64 lines
1.9 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// Kiegészít egy <c>XMI</c> modellt úgy, hogy minden elemnek egyedi <c>ID</c>-ja legyen.
|
|
/// </summary>
|
|
public sealed class UpdateIds : Task
|
|
{
|
|
/// <summary>
|
|
/// A módosítandó <c>XML</c> modell állomány neve.
|
|
/// </summary>
|
|
[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;
|
|
}
|
|
}
|
|
}
|