xamarin-macios/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/CodesignTaskBase.cs

104 строки
2.4 KiB
C#

using System.IO;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace Xamarin.MacDev.Tasks
{
public abstract class CodesignTaskBase : ToolTask
{
#region Inputs
public string SessionId { get; set; }
[Required]
public string CodesignAllocate { get; set; }
public string Entitlements { get; set; }
public string Keychain { get; set; }
[Required]
public string Resource { get; set; }
public string ResourceRules { get; set; }
[Required]
public string SigningKey { get; set; }
public string ExtraArgs { get; set; }
#endregion
protected override string ToolName {
get { return "codesign"; }
}
protected override string GenerateFullPathToTool ()
{
if (!string.IsNullOrEmpty (ToolPath))
return Path.Combine (ToolPath, ToolExe);
var path = Path.Combine ("/usr/bin", ToolExe);
return File.Exists (path) ? path : ToolExe;
}
protected override string GenerateCommandLineCommands ()
{
var args = new ProcessArgumentBuilder ();
args.Add ("-v");
args.Add ("--force");
args.Add ("--sign");
args.AddQuoted (SigningKey);
if (!string.IsNullOrEmpty (Keychain)) {
args.Add ("--keychain");
args.AddQuoted (Path.GetFullPath (Keychain));
}
if (!string.IsNullOrEmpty (ResourceRules)) {
args.Add ("--resource-rules");
args.AddQuoted (Path.GetFullPath (ResourceRules));
}
if (!string.IsNullOrEmpty (Entitlements)) {
args.Add ("--entitlements");
args.AddQuoted (Path.GetFullPath (Entitlements));
}
if (!string.IsNullOrEmpty (ExtraArgs))
args.Add (ExtraArgs);
args.AddQuoted (Path.GetFullPath (Resource));
return args.ToString ();
}
protected override void LogEventsFromTextOutput (string singleLine, MessageImportance messageImportance)
{
// TODO: do proper parsing of error messages and such
Log.LogMessage (messageImportance, "{0}", singleLine);
}
public override bool Execute ()
{
Log.LogTaskName ("Codesign");
Log.LogTaskProperty ("CodesignAllocate", CodesignAllocate);
Log.LogTaskProperty ("Entitlements", Entitlements);
Log.LogTaskProperty ("Keychain", Keychain);
Log.LogTaskProperty ("Resource", Resource);
Log.LogTaskProperty ("ResourceRules", ResourceRules);
Log.LogTaskProperty ("SigningKey", SigningKey);
Log.LogTaskProperty ("ExtraArgs", ExtraArgs);
EnvironmentVariables = new string[] {
"CODESIGN_ALLOCATE=" + CodesignAllocate
};
return base.Execute ();
}
}
}