50 строки
1.4 KiB
Plaintext
50 строки
1.4 KiB
Plaintext
#r "_provisionator/provisionator.dll"
|
|
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using System.Linq;
|
|
|
|
using static Xamarin.Provisioning.ProvisioningScript;
|
|
|
|
// Provision Xcode using the xip name declared in Make.config
|
|
var xcodeItem = GetXcodeItem ("@XCODE_XIP_NAME@");
|
|
Item (xcodeItem).XcodeSelect (allowUntrusted: true);
|
|
|
|
// provisionator knows how to deal with this items
|
|
Item ("@MONO_PACKAGE@");
|
|
Item ("@VS_PACKAGE@");
|
|
Item ("@XI_PACKAGE@");
|
|
|
|
BrewPackage ("p7zip");
|
|
|
|
void BrewPackage (string name)
|
|
{
|
|
// Assumes brew is already installed.
|
|
// All Macs provisioned by Xamarin, VSEng, or DDFUN should have brew by default!
|
|
Item (name)
|
|
.Condition (i => !Exec ("brew", "list", "-1").Any (x => x.Trim () == i.Name))
|
|
.Action (i => Exec ("brew", "install", i.Name));
|
|
}
|
|
|
|
XreItem GetXcodeItem (string xipFileName)
|
|
{
|
|
var items = (XreItem []) Enum.GetValues (typeof (XreItem));
|
|
var xreItemType = typeof (XreItem);
|
|
var itemAttrType = typeof (Xamarin.Provisioning.Model.ItemAttribute);
|
|
|
|
foreach (var item in items) {
|
|
var attr = xreItemType
|
|
.GetField (item.ToString ())
|
|
.GetCustomAttributes (itemAttrType, false)
|
|
?.Cast<Xamarin.Provisioning.Model.ItemAttribute> ()
|
|
.FirstOrDefault (a => a.Uri.EndsWith (xipFileName, StringComparison.Ordinal));
|
|
|
|
if (attr == null)
|
|
continue;
|
|
|
|
return item;
|
|
}
|
|
|
|
throw new Xamarin.Provisioning.ProvisioningException ($"'{xipFileName}' not found in 'XreItem' members.");
|
|
}
|