xamarin-macios/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/PackLibraryResourcesTaskBas...

72 строки
1.5 KiB
C#
Исходник Обычный вид История

2016-04-21 16:40:25 +03:00
using System;
using System.Text;
using System.Collections.Generic;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
2020-03-14 00:46:28 +03:00
using Xamarin.Localization.MSBuild;
2016-04-21 16:40:25 +03:00
namespace Xamarin.MacDev.Tasks
{
public abstract class PackLibraryResourcesTaskBase : XamarinTask
2016-04-21 16:40:25 +03:00
{
#region Inputs
[Required]
public string Prefix { get; set; }
public ITaskItem[] BundleResourcesWithLogicalNames { get; set; }
#endregion
#region Outputs
[Output]
public ITaskItem[] EmbeddedResources { get; set; }
#endregion
static string EscapeMangledResource (string name)
{
var mangled = new StringBuilder ();
for (int i = 0; i < name.Length; i++) {
switch (name[i]) {
case '\\': mangled.Append ("_b"); break;
case '/': mangled.Append ("_f"); break;
case '_': mangled.Append ("__"); break;
default: mangled.Append (name[i]); break;
}
}
return mangled.ToString ();
}
public override bool Execute ()
{
var results = new List<ITaskItem> ();
if (BundleResourcesWithLogicalNames != null) {
foreach (var item in BundleResourcesWithLogicalNames) {
var logicalName = item.GetMetadata ("LogicalName");
if (string.IsNullOrEmpty (logicalName)) {
2020-03-14 00:46:28 +03:00
Log.LogError (MSBStrings.E0161);
2016-04-21 16:40:25 +03:00
return false;
}
var embedded = new TaskItem (item);
embedded.SetMetadata ("LogicalName", "__" + Prefix + "_content_" + EscapeMangledResource (logicalName));
results.Add (embedded);
}
}
EmbeddedResources = results.ToArray ();
return !Log.HasLoggedErrors;
}
}
}