using System.Collections.Generic;
namespace Matrix42.Extensions.Scaffolder.Core.Project;
public class ProjectDefinition
{
///
/// E.g. "Services", "BizLogic", etc.
/// If empty, project name will be equal to ExtensionNamespace.
///
public string Prefix { get; set; } = string.Empty;
public RuntimeTargets Runtimes { get; set; }
///
/// Combination of functionality flags: WebApi, Engine, Behavior, Connector, Custom.
///
public ProjectFunctionality Functionality { get; set; } = ProjectFunctionality.None;
public string Display => $"Prefix: {Prefix} - Runtimes: {Runtimes} - Functionality: {Functionality}";
public string GetProjectName(string extensionNamespace)
{
var pfx = Prefix?.Trim();
return string.IsNullOrWhiteSpace(pfx)
? extensionNamespace
: $"{extensionNamespace}.{pfx}";
}
public string GetNamespace(string extensionNamespace) => GetProjectName(extensionNamespace);
public bool DoesSupportAllRuntimes() => Runtimes.HasFlag(RuntimeTargets.All);
public string GetRuntimeIdentifiers()
{
if (DoesSupportAllRuntimes())
{
return "netstandard2.0";
}
var list = new List();
if (Runtimes.HasFlag(RuntimeTargets.Win) || Runtimes.HasFlag(RuntimeTargets.WinCore))
{
list.Add("win-x64");
}
if (Runtimes.HasFlag(RuntimeTargets.LinuxCore))
{
list.Add("linux-x64");
}
return string.Join(";", list);
}
}