From 406f7ed42300583f03f08260a6b25df5357675b6 Mon Sep 17 00:00:00 2001 From: Forgind Date: Tue, 25 Jul 2023 16:08:41 -0700 Subject: [PATCH] Create task to parse json files --- src/core-sdk-tasks/JsonPropertyParser.cs | 54 ++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/core-sdk-tasks/JsonPropertyParser.cs diff --git a/src/core-sdk-tasks/JsonPropertyParser.cs b/src/core-sdk-tasks/JsonPropertyParser.cs new file mode 100644 index 000000000..ae023280e --- /dev/null +++ b/src/core-sdk-tasks/JsonPropertyParser.cs @@ -0,0 +1,54 @@ +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 JsonPropertyParser : Task + { + [Required] + public string Filename + { + get; + set; + } + + [Required] + public string Path + { + get; + set; + } + + [Output] + public string Value + { + get; + private set; + } + + public override bool Execute() + { + try + { + using (var sr = new StreamReader(Filename)) + { + var json = sr.ReadToEnd(); + var o = JObject.Parse(json); + Value = o.SelectToken(Path).Value(); + } + } + catch (Exception e) + { + Log.LogErrorFromException(e); + } + + return !Log.HasLoggedErrors; + } + } +}