117 строки
5.1 KiB
Plaintext
Executable File
117 строки
5.1 KiB
Plaintext
Executable File
#!/usr/bin/env /Library/Frameworks/Mono.framework/Commands/csharp
|
|
|
|
// arguments are: <platform> <outputPath>
|
|
|
|
using System.IO;
|
|
using System.Xml;
|
|
|
|
var args = Environment.GetCommandLineArgs ();
|
|
var expectedArgumentCount = 6;
|
|
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 argumentIndex = 2;
|
|
var platform = args [argumentIndex++];
|
|
var version = args [argumentIndex++];
|
|
var net6Version = args [argumentIndex++];
|
|
var runtimeIdentifiers = args [argumentIndex++].Split (' ');
|
|
var outputPath = args [argumentIndex++];
|
|
var windowsPlatforms = args [argumentIndex++].Split (' ');
|
|
var hasWindows = Array.IndexOf (windowsPlatforms, platform) >= 0;
|
|
|
|
var platformLowerCase = platform.ToLowerInvariant ();
|
|
|
|
using (TextWriter writer = new StreamWriter (outputPath)) {
|
|
writer.WriteLine ($"{{");
|
|
writer.WriteLine ($" \"version\": \"{version}\",");
|
|
writer.WriteLine ($" \"workloads\": {{");
|
|
writer.WriteLine ($" \"{platformLowerCase}\": {{");
|
|
writer.WriteLine ($" \"description\": \".NET SDK Workload for building {platform} applications.\",");
|
|
writer.WriteLine ($" \"packs\": [");
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Sdk.net7\",");
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Sdk.net6\",");
|
|
if (hasWindows) {
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Windows.Sdk.Aliased.net7\",");
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Windows.Sdk.Aliased.net6\",");
|
|
}
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Ref\",");
|
|
foreach (var rid in runtimeIdentifiers) {
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Runtime.{rid}\",");
|
|
}
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Templates.net7\"");
|
|
writer.WriteLine ($" ],");
|
|
writer.WriteLine ($" \"extends\": [");
|
|
if (platform == "macOS") {
|
|
writer.WriteLine ($" \"microsoft-net-runtime-mono-tooling\",");
|
|
writer.WriteLine ($" \"microsoft-net-runtime-mono-tooling-net6\",");
|
|
} else {
|
|
writer.WriteLine ($" \"microsoft-net-runtime-{platformLowerCase}\",");
|
|
writer.WriteLine ($" \"microsoft-net-runtime-{platformLowerCase}-net6\",");
|
|
}
|
|
writer.WriteLine ($" ]");
|
|
writer.WriteLine ($" }},");
|
|
writer.WriteLine ($" }},");
|
|
writer.WriteLine ($" \"packs\": {{");
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Sdk.net7\": {{");
|
|
writer.WriteLine ($" \"kind\": \"sdk\",");
|
|
writer.WriteLine ($" \"version\": \"{version}\",");
|
|
writer.WriteLine ($" \"alias-to\": {{");
|
|
writer.WriteLine ($" \"any\": \"Microsoft.{platform}.Sdk\"");
|
|
writer.WriteLine ($" }}");
|
|
writer.WriteLine ($" }},");
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Sdk.net6\": {{");
|
|
writer.WriteLine ($" \"kind\": \"sdk\",");
|
|
writer.WriteLine ($" \"version\": \"{net6Version}\",");
|
|
writer.WriteLine ($" \"alias-to\": {{");
|
|
writer.WriteLine ($" \"any\": \"Microsoft.{platform}.Sdk\"");
|
|
writer.WriteLine ($" }}");
|
|
writer.WriteLine ($" }},");
|
|
if (hasWindows) {
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Windows.Sdk.Aliased.net7\": {{");
|
|
writer.WriteLine ($" \"kind\": \"sdk\",");
|
|
writer.WriteLine ($" \"version\": \"{version}\",");
|
|
writer.WriteLine ($" \"alias-to\": {{");
|
|
writer.WriteLine ($" \"win-x64\": \"Microsoft.{platform}.Windows.Sdk\",");
|
|
writer.WriteLine ($" \"win-x86\": \"Microsoft.{platform}.Windows.Sdk\",");
|
|
writer.WriteLine ($" \"win-arm64\": \"Microsoft.{platform}.Windows.Sdk\",");
|
|
writer.WriteLine ($" }}");
|
|
writer.WriteLine ($" }},");
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Windows.Sdk.Aliased.net6\": {{");
|
|
writer.WriteLine ($" \"kind\": \"sdk\",");
|
|
writer.WriteLine ($" \"version\": \"{net6Version}\",");
|
|
writer.WriteLine ($" \"alias-to\": {{");
|
|
writer.WriteLine ($" \"win-x64\": \"Microsoft.{platform}.Windows.Sdk\",");
|
|
writer.WriteLine ($" \"win-x86\": \"Microsoft.{platform}.Windows.Sdk\",");
|
|
writer.WriteLine ($" \"win-arm64\": \"Microsoft.{platform}.Windows.Sdk\",");
|
|
writer.WriteLine ($" }}");
|
|
writer.WriteLine ($" }},");
|
|
}
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Ref\": {{");
|
|
writer.WriteLine ($" \"kind\": \"framework\",");
|
|
writer.WriteLine ($" \"version\": \"{version}\"");
|
|
writer.WriteLine ($" }},");
|
|
foreach (var rid in runtimeIdentifiers) {
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Runtime.{rid}\": {{");
|
|
writer.WriteLine ($" \"kind\": \"framework\",");
|
|
writer.WriteLine ($" \"version\": \"{version}\"");
|
|
writer.WriteLine ($" }},");
|
|
}
|
|
writer.WriteLine ($" \"Microsoft.{platform}.Templates.net7\": {{");
|
|
writer.WriteLine ($" \"kind\": \"template\",");
|
|
writer.WriteLine ($" \"version\": \"{version}\",");
|
|
writer.WriteLine ($" \"alias-to\": {{");
|
|
writer.WriteLine ($" \"any\": \"Microsoft.{platform}.Templates\",");
|
|
writer.WriteLine ($" }}");
|
|
writer.WriteLine ($" }}");
|
|
writer.WriteLine ($" }}");
|
|
writer.WriteLine ($"}}");
|
|
}
|
|
|
|
Environment.Exit (0);
|