29 строки
1011 B
Plaintext
Executable File
29 строки
1011 B
Plaintext
Executable File
#!/usr/bin/env /Library/Frameworks/Mono.framework/Commands/csharp
|
|
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Xml;
|
|
|
|
var args = Environment.GetCommandLineArgs ();
|
|
var expectedArgumentCount = 1;
|
|
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 plistPath = args [2];
|
|
var doc = new XmlDocument ();
|
|
doc.Load (plistPath);
|
|
var nodes = doc.SelectNodes ($"/plist/dict/key[text()='KnownVersions']/following-sibling::dict[1]/key[text()='macOS']/following-sibling::array[1]/string");
|
|
|
|
var sb = new StringBuilder ();
|
|
foreach (XmlNode n in nodes)
|
|
sb.Append ($"{n.InnerText} ");
|
|
Console.WriteLine (sb);
|
|
|
|
Environment.Exit (0);
|