Skip to content
This repository was archived by the owner on Jun 20, 2023. It is now read-only.

Commit 8b8f6c7

Browse files
committed
Migrated diff step to cake addin
1 parent a840d5c commit 8b8f6c7

File tree

1 file changed

+34
-47
lines changed

1 file changed

+34
-47
lines changed

build.cake

Lines changed: 34 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
#tool nuget:?package=ILRepack&version=2.0.10
22
#tool nuget:?package=XamarinComponent
3+
#tool nuget:?package=Cake.MonoApiTools
34

45
#addin nuget:?package=Cake.XCode
56
#addin nuget:?package=Cake.Xamarin
67
#addin nuget:?package=Cake.Xamarin.Build
78
#addin nuget:?package=Cake.FileHelpers
9+
#addin nuget:?package=Cake.MonoApiTools
810

911
var TARGET = Argument ("t", Argument ("target", "Default"));
1012

@@ -168,6 +170,38 @@ Task ("externals")
168170
}
169171
});
170172

173+
Task ("diff")
174+
.WithCriteria (!IsRunningOnWindows ())
175+
.IsDependentOn ("merge")
176+
.Does (() =>
177+
{
178+
var SEARCH_DIRS = new FilePath [] {
179+
MONODROID_PATH,
180+
"/Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/xbuild-frameworks/MonoAndroid/v1.0/",
181+
"/Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/mono/2.1/"
182+
};
183+
184+
MonoApiInfo ("./output/AndroidSupport.Merged.dll",
185+
"./output/AndroidSupport.api-info.xml",
186+
new MonoApiInfoToolSettings { SearchPaths = SEARCH_DIRS });
187+
188+
// Grab the latest published api info from S3
189+
var latestReleasedApiInfoUrl = "http://xamarin-components-apiinfo.s3.amazonaws.com/Support.Android-Latest.xml";
190+
DownloadFile (latestReleasedApiInfoUrl, "./output/AndroidSupport.api-info.previous.xml");
191+
192+
// Now diff against current release'd api info
193+
// eg: mono mono-api-diff.exe ./gps.r26.xml ./gps.r27.xml > gps.diff.xml
194+
MonoApiDiff ("./output/AndroidSupport.api-info.previous.xml",
195+
"./output/AndroidSupport.api-info.xml",
196+
"./output/AndroidSupport.api-diff.xml");
197+
198+
// Now let's make a purty html file
199+
// eg: mono mono-api-html.exe -c -x ./gps.previous.info.xml ./gps.current.info.xml > gps.diff.html
200+
MonoApiHtml ("./output/AndroidSupport.api-info.previous.xml",
201+
"./output/AndroidSupport.api-info.xml",
202+
"./output/AndroidSupport.api-diff.html");
203+
});
204+
171205
Task ("merge").IsDependentOn ("libs").Does (() =>
172206
{
173207
if (FileExists ("./output/AndroidSupport.Merged.dll"))
@@ -184,53 +218,6 @@ Task ("merge").IsDependentOn ("libs").Does (() =>
184218
MONODROID_PATH
185219
},
186220
});
187-
188-
Information ("Completed: {0}", "ILRepack");
189-
190-
// Don't want to think about what the paths will do to this on windows right now
191-
if (!IsRunningOnWindows ()) {
192-
// Download the tools needed to run the next steps
193-
if (!DirectoryExists ("./tools/mono-api-tools")) {
194-
EnsureDirectoryExists ("./tools/mono-api-tools/");
195-
DownloadFile (MONO_API_TOOLS_URL, "./tools/mono-api-tools.zip");
196-
Unzip ("./tools/mono-api-tools.zip", "./tools/mono-api-tools/");
197-
}
198-
199-
// Next run the mono-api-info.exe to generate xml api info we can later diff with
200-
var monoApiInfoExe = GetFiles ("./tools/**/mono-api-info.exe").FirstOrDefault ();
201-
var monoApiDiffExe = GetFiles ("./tools/**/mono-api-diff.exe").FirstOrDefault ();
202-
var monoApiHtmlExe = GetFiles ("./tools/**/mono-api-html.exe").FirstOrDefault ();
203-
204-
IEnumerable<string> procStdOut;
205-
206-
var interopPath = "/Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/mono/2.1/";
207-
//eg: mono mono-api-info.exe --search-directory=/Library/Frameworks/Xamarin.Android.framework/Libraries/mandroid/platforms/android-23 ./Some.dll > api-info.xml
208-
StartProcess (monoApiInfoExe, new ProcessSettings {
209-
Arguments = "--search-directory=" + MONODROID_PATH + " --search-directory=" + interopPath + " ./output/AndroidSupport.Merged.dll",
210-
RedirectStandardOutput = true,
211-
}, out procStdOut);
212-
FileWriteLines ("./output/AndroidSupport.api-info.xml", procStdOut.ToArray ());
213-
214-
// Grab the latest published api info from S3
215-
var latestReleasedApiInfoUrl = "http://xamarin-components-apiinfo.s3.amazonaws.com/Support.Android-Latest.xml";
216-
DownloadFile (latestReleasedApiInfoUrl, "./output/AndroidSupport.api-info.previous.xml");
217-
218-
// Now diff against current release'd api info
219-
// eg: mono mono-api-diff.exe ./gps.r26.xml ./gps.r27.xml > gps.diff.xml
220-
StartProcess (monoApiDiffExe, new ProcessSettings {
221-
Arguments = "./output/AndroidSupport.api-info.previous.xml ./output/AndroidSupport.api-info.xml",
222-
RedirectStandardOutput = true,
223-
}, out procStdOut);
224-
FileWriteLines ("./output/AndroidSupport.api-diff.xml", procStdOut.ToArray ());
225-
226-
// Now let's make a purty html file
227-
// eg: mono mono-api-html.exe -c -x ./gps.previous.info.xml ./gps.current.info.xml > gps.diff.html
228-
StartProcess (monoApiHtmlExe, new ProcessSettings {
229-
Arguments = "-c -x ./output/AndroidSupport.api-info.previous.xml ./output/AndroidSupport.api-info.xml",
230-
RedirectStandardOutput = true,
231-
}, out procStdOut);
232-
FileWriteLines ("./output/AndroidSupport.api-diff.html", procStdOut.ToArray ());
233-
}
234221
});
235222

236223

0 commit comments

Comments
 (0)