#!/usr/bin/env /Library/Frameworks/Mono.framework/Commands/csharp // arguments are: using System.IO; using System.Xml; var args = Environment.GetCommandLineArgs (); var expectedArgumentCount = 2; if (args.Length != expectedArgumentCount + 2 /* 2 default arguments (executable + script) + 'expectedArgumentCount' arguments we're interested in */) { // first arg is "/Library/Frameworks/Mono.framework/Versions/4.8.0/lib/mono/4.5/csharp.exe" // second arg the script itself // then comes the ones we care about Console.WriteLine ($"Need {expectedArgumentCount} arguments, got {args.Length - 2}"); Environment.Exit (1); return; } var platform = args [2]; var outputPath = args [3]; var plistPath = platform == "macOS" ? "../Versions-mac.plist.in" : "../Versions-ios.plist.in"; var doc = new XmlDocument (); doc.Load (plistPath); var nodes = doc.SelectNodes ($"/plist/dict/key[text()='KnownVersions']/following-sibling::dict[1]/key[text()='{platform}']/following-sibling::array[1]/string"); using (TextWriter writer = new StreamWriter (outputPath)) { writer.WriteLine ($""); writer.WriteLine ($""); writer.WriteLine (""); writer.WriteLine ("\t"); foreach (XmlNode n in nodes) writer.WriteLine ($"\t\t<{platform}SdkSupportedTargetPlatformVersion Include=\"{n.InnerText}\" />"); writer.WriteLine ("\t"); writer.WriteLine ("\t"); writer.WriteLine ($"\t\t"); writer.WriteLine ("\t"); writer.WriteLine (""); } Environment.Exit (0);