Console.Waterworks.Core is the .Net Core version of Console.Waterworks. https://www.craigoates.net/Software/project/8
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.9 KiB

using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace Console.Waterworks.Core.Specialists
{
class ProgramInfoSpecialist
{
internal List<string> GatherProgramInfomation()
{
var info = new List<string>()
{
addProductLine(),
addCompanyLine(),
addCopyRightLine(),
addProductDescription()
};
return info;
}
private string addCopyRightLine()
{
var assembly = Assembly.GetEntryAssembly();
var copyRightAttribute = assembly.GetCustomAttributes<AssemblyCopyrightAttribute>().FirstOrDefault();
return copyRightAttribute?.Copyright;
}
string addProductLine()
{
var name = GetProductName();
var buildInfo = getBuildInfo();
return (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(buildInfo)) ? $"{name} {buildInfo}" : null;
}
string addCompanyLine()
{
var assembly = Assembly.GetEntryAssembly();
var companyAttribute = assembly.GetCustomAttributes<AssemblyCompanyAttribute>().FirstOrDefault();
return companyAttribute?.Company;
}
string addProductDescription()
{
var assembly = Assembly.GetEntryAssembly();
var descriptionAttribute = assembly.GetCustomAttributes<AssemblyDescriptionAttribute>().FirstOrDefault();
return descriptionAttribute?.Description;
}
internal string GetProductName()
{
var assembly = Assembly.GetEntryAssembly();
var productAttribute = assembly.GetCustomAttributes<AssemblyProductAttribute>().FirstOrDefault();
return productAttribute?.Product;
}
string getBuildInfo() => Assembly.GetEntryAssembly().GetName().Version.ToString();
}
}