feat: Improved preview output for release profiles

pull/201/head
Robert Dailey 1 year ago
parent 964aeb8380
commit 6fb1d4ad66

@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- The CLI has been completely redesigned to be more consistent and structured (#142).
- Improved preview output for quality sizes
- Improved preview output for quality sizes, custom formats, and release profiles.
### Deprecated

@ -59,68 +59,81 @@ public class ReleaseProfileUpdater : IReleaseProfileUpdater
if (isPreview)
{
foreach (var profile in filteredProfiles.Select(x => x.Profile))
{
PrintTermsAndScores(profile);
}
PreviewReleaseProfiles(filteredProfiles.Select(x => x.Profile));
return;
}
await ProcessReleaseProfiles(filteredProfiles);
}
private void PrintTermsAndScores(ReleaseProfileData profile)
private void PreviewReleaseProfiles(IEnumerable<ReleaseProfileData> profiles)
{
void PrintPreferredTerms(string title, IReadOnlyCollection<PreferredTermData> preferredTerms)
var tree = new Tree("Release Profiles [red](Preview)[/]");
foreach (var profile in profiles)
{
if (preferredTerms.Count <= 0)
{
return;
}
PrintTermsAndScores(tree, profile);
}
_console.WriteLine($" {title}:");
foreach (var (score, terms) in preferredTerms)
{
foreach (var term in terms)
{
_console.WriteLine($" {score,-10} {term}");
}
}
_console.WriteLine();
_console.Write(tree);
}
_console.WriteLine("");
}
private void PrintTermsAndScores(Tree tree, ReleaseProfileData profile)
{
var rpNode = tree.AddNode($"[yellow]{profile.Name}[/]");
var incPreferred = profile.IncludePreferredWhenRenaming ? "[green]YES[/]" : "[red]NO[/]";
rpNode.AddNode($"Include Preferred when Renaming? {incPreferred}");
PrintTerms(rpNode, "Must Contain", profile.Required);
PrintTerms(rpNode, "Must Not Contain", profile.Ignored);
PrintPreferredTerms(rpNode, "Preferred", profile.Preferred);
_console.WriteLine("");
}
void PrintTerms(string title, IReadOnlyCollection<TermData> terms)
private static void PrintTerms(TreeNode tree, string title, IReadOnlyCollection<TermData> terms)
{
if (terms.Count == 0)
{
if (terms.Count == 0)
{
return;
}
return;
}
_console.WriteLine($" {title}:");
foreach (var term in terms)
{
_console.WriteLine($" {term}");
}
var table = new Table()
.AddColumn("[bold]Term[/]");
_console.WriteLine("");
foreach (var term in terms)
{
table.AddRow(Markup.Escape(term.Term));
}
_console.WriteLine("");
tree.AddNode(title)
.AddNode(table);
}
_console.WriteLine(profile.Name);
private static void PrintPreferredTerms(TreeNode tree, string title,
IReadOnlyCollection<PreferredTermData> preferredTerms)
{
if (preferredTerms.Count <= 0)
{
return;
}
_console.WriteLine(" Include Preferred when Renaming?");
_console.WriteLine(" " +
(profile.IncludePreferredWhenRenaming ? "YES" : "NO"));
_console.WriteLine("");
var table = new Table()
.AddColumn("[bold]Score[/]")
.AddColumn("[bold]Term[/]");
PrintTerms("Must Contain", profile.Required);
PrintTerms("Must Not Contain", profile.Ignored);
PrintPreferredTerms("Preferred", profile.Preferred);
foreach (var (score, terms) in preferredTerms)
{
foreach (var term in terms)
{
table.AddRow(score.ToString(), Markup.Escape(term.Term));
}
}
_console.WriteLine("");
tree.AddNode(title)
.AddNode(table);
}
private async Task ProcessReleaseProfiles(

Loading…
Cancel
Save