using System; using System.IO; using System.Linq; using System.Reflection; namespace Kavita.Common.EnvironmentInfo { public static class BuildInfo { static BuildInfo() { var assembly = Assembly.GetExecutingAssembly(); Version = assembly.GetName().Version; var attributes = assembly.GetCustomAttributes(true); Branch = "unknown"; var config = attributes.OfType().FirstOrDefault(); if (config != null) { Branch = config.Configuration; // NOTE: This is not helpful, better to have main/develop branch } Release = $"{Version}-{Branch}"; } public static string AppName { get; } = "Kavita"; public static Version Version { get; } public static string Branch { get; } public static string Release { get; } public static DateTime BuildDateTime { get { var fileLocation = Assembly.GetCallingAssembly().Location; return new FileInfo(fileLocation).LastWriteTimeUtc; } } public static bool IsDebug { get { #if DEBUG return true; #else return false; #endif } } } }