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.
60 lines
1.5 KiB
60 lines
1.5 KiB
using StabilityMatrix.Core.Models.FileInterfaces; |
|
|
|
namespace StabilityMatrix.Core.Models.Packages.Extensions; |
|
|
|
public record InstalledPackageExtension |
|
{ |
|
/// <summary> |
|
/// All folders or files of the extension. |
|
/// </summary> |
|
public required IEnumerable<IPathObject> Paths { get; init; } |
|
|
|
/// <summary> |
|
/// Primary path of the extension. |
|
/// </summary> |
|
public IPathObject? PrimaryPath => Paths.FirstOrDefault(); |
|
|
|
/// <summary> |
|
/// The version of the extension. |
|
/// </summary> |
|
public PackageExtensionVersion? Version { get; init; } |
|
|
|
/// <summary> |
|
/// Remote git repository url, if the extension is a git repository. |
|
/// </summary> |
|
public string? GitRepositoryUrl { get; init; } |
|
|
|
/// <summary> |
|
/// The PackageExtension definition, if available. |
|
/// </summary> |
|
public PackageExtension? Definition { get; init; } |
|
|
|
public string Title |
|
{ |
|
get |
|
{ |
|
if (Definition?.Title is { } title) |
|
{ |
|
return title; |
|
} |
|
|
|
if (Paths.FirstOrDefault()?.Name is { } pathName) |
|
{ |
|
return pathName; |
|
} |
|
|
|
return ""; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// Path containing PrimaryPath and its parent. |
|
/// </summary> |
|
public string DisplayPath => |
|
PrimaryPath switch |
|
{ |
|
null => "", |
|
DirectoryPath { Parent: { } parentDir } dir => $"{parentDir.Name}/{dir.Name}", |
|
_ => PrimaryPath.Name |
|
}; |
|
}
|
|
|