using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Razor.TagHelpers; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.IO; namespace Teknik.Utilities.TagHelpers { [HtmlTargetElement("version")] public class VersionHelper : TagHelper { private const string _verFile = "version.json"; private readonly IWebHostEnvironment _env; public string Source { get; set; } public VersionHelper(IWebHostEnvironment env) { _env = env; } public override void Process(TagHelperContext context, TagHelperOutput output) { // Clear the initial wrap tag output.TagName = string.Empty; // Get the version file info string dataDir = (string)AppDomain.CurrentDomain.GetData("DataDirectory"); string fullPath = Path.Combine(dataDir, _verFile); if (File.Exists(fullPath)) { using (StreamReader file = File.OpenText(fullPath)) using (JsonTextReader reader = new JsonTextReader(file)) { JObject res = (JObject)JToken.ReadFrom(reader); string commitVer = res["version"].ToString(); string commitHash = res["hash"].ToString(); output.Content.AppendHtml($"Version: {commitVer} - Hash: {commitHash.Truncate(10)} | {_env.EnvironmentName}"); } } } } }