From c88073899d39a8972fa79b792d65dbb5bed0a15a Mon Sep 17 00:00:00 2001 From: chrisriesgo Date: Mon, 3 Nov 2014 08:17:56 -0600 Subject: [PATCH] Added a Xamarin.iOS Archiving helper --- src/app/FakeLib/XamarinHelper.fs | 37 +++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/app/FakeLib/XamarinHelper.fs b/src/app/FakeLib/XamarinHelper.fs index 05d665e7f6e..4f9a533fc88 100644 --- a/src/app/FakeLib/XamarinHelper.fs +++ b/src/app/FakeLib/XamarinHelper.fs @@ -157,4 +157,39 @@ let AndroidSignAndAlign setParams apkFile = AndroidSignAndAlignDefaults |> setParams |> validateParams - |> signAndAlign apkFile \ No newline at end of file + |> signAndAlign apkFile + +/// The iOS archive paramater type +type iOSArchiveParams = { + /// (Required) Path to project file + ProjectPath: string + /// Build configuration, defaults to 'Debug|iPhoneSimulator' + Configuration: string + /// Path to mdtool, defaults to Xamarin Studio's usual path + MDToolPath: string +} + +/// The default iOS archive parameters +let iOSArchiveDefaults = { + ProjectPath = "" + Configuration = "Debug|iPhoneSimulator" + MDToolPath = "/Applications/Xamarin Studio.app/Contents/MacOS/mdtool" +} + +/// Archive a project using Xamarin's iOS archive tools +/// ## Parameters +/// - `setParams` - Function used to override the default archive parameters +let iOSArchive setParams = + let validateParams param = + if param.ProjectPath = "" then failwith "You must specify a project to archive" + + param + + let archiveProject param = + let args = String.Format(@"-v archive ""-c:{0}"" -p:{1}", param.Configuration, param.ProjectPath) + executeCommand param.MDToolPath args + + iOSArchiveDefaults + |> setParams + |> validateParams + |> archiveProject \ No newline at end of file