30 lines
1,023 B
C#
30 lines
1,023 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Microsoft.Build.Framework;
|
|
using Microsoft.Build.Utilities;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace Microsoft.DotNet.Cli.Build
|
|
{
|
|
public class GetRuntimePackRids : Task
|
|
{
|
|
[Required]
|
|
public string MetapackagePath { get; set; }
|
|
|
|
[Output]
|
|
public ITaskItem[] AvailableRuntimePackRuntimeIdentifiers { get; set; }
|
|
|
|
public override bool Execute()
|
|
{
|
|
string runtimeJsonPath = Path.Combine(MetapackagePath, "runtime.json");
|
|
string runtimeJsonContents = File.ReadAllText(runtimeJsonPath);
|
|
var runtimeJsonRoot = JObject.Parse(runtimeJsonContents);
|
|
string [] runtimeIdentifiers = ((JObject)runtimeJsonRoot["runtimes"]).Properties().Select(p => p.Name).ToArray();
|
|
AvailableRuntimePackRuntimeIdentifiers = runtimeIdentifiers.Select(rid => new TaskItem(rid)).ToArray();
|
|
return true;
|
|
}
|
|
}
|
|
}
|