xamarin-macios/tools/devops/device-tests-provisioning.c...

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.");
}