2016-08-15 22:07:34 +03:00
|
|
|
|
using System.IO;
|
2016-04-21 16:40:25 +03:00
|
|
|
|
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
|
|
|
|
|
2020-11-26 16:47:41 +03:00
|
|
|
|
namespace Xamarin.MacDev.Tasks
|
2016-04-21 16:40:25 +03:00
|
|
|
|
{
|
2020-06-19 18:40:18 +03:00
|
|
|
|
public abstract class CollectFrameworksBase : XamarinTask
|
2016-04-21 16:40:25 +03:00
|
|
|
|
{
|
|
|
|
|
#region Inputs
|
|
|
|
|
|
|
|
|
|
[Required]
|
2020-11-26 16:47:41 +03:00
|
|
|
|
public string FrameworksDirectory { get; set; }
|
2016-04-21 16:40:25 +03:00
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Outputs
|
|
|
|
|
|
|
|
|
|
[Output]
|
|
|
|
|
public ITaskItem[] Frameworks { get; set; }
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
public override bool Execute ()
|
|
|
|
|
{
|
|
|
|
|
var frameworks = new List<ITaskItem> ();
|
|
|
|
|
|
2020-11-26 16:47:41 +03:00
|
|
|
|
if (Directory.Exists (FrameworksDirectory)) {
|
|
|
|
|
foreach (var fw in Directory.GetDirectories (FrameworksDirectory)) {
|
2016-08-15 22:07:34 +03:00
|
|
|
|
if (Path.GetExtension (fw) != ".framework") {
|
2020-03-14 00:46:28 +03:00
|
|
|
|
Log.LogWarning (MSBStrings.W0103, fw);
|
2016-04-21 16:40:25 +03:00
|
|
|
|
continue;
|
|
|
|
|
}
|
2020-11-26 16:47:41 +03:00
|
|
|
|
var stem = Path.GetFileNameWithoutExtension (fw);
|
2016-04-21 16:40:25 +03:00
|
|
|
|
var fwBinary = Path.Combine (fw, stem);
|
|
|
|
|
if (!File.Exists (fwBinary)) {
|
2020-11-26 16:47:41 +03:00
|
|
|
|
Log.LogWarning (MSBStrings.W0104, fw, stem);
|
2016-04-21 16:40:25 +03:00
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var framework = new TaskItem (fwBinary);
|
|
|
|
|
frameworks.Add (framework);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
2020-03-14 00:46:28 +03:00
|
|
|
|
Log.LogMessage (MSBStrings.M0105);
|
2016-04-21 16:40:25 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Frameworks = frameworks.ToArray ();
|
|
|
|
|
|
|
|
|
|
return !Log.HasLoggedErrors;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|