using Spectre.Console; namespace EdgeInstaller; public static partial class EdgeInstall { static void RenderPackageAsTable(Package package) { Table Package = new Table() .Centered() .Border(TableBorder.Rounded) .HideHeaders() .Title("Package To Install"); AnsiConsole.Live(Package) .AutoClear(false) .Start(context => { Package.AddColumns("", ""); context.Refresh(); Thread.Sleep(250); Package.AddRow("[bold yellow]Package Name : [/]", $"{package.PackageName}"); context.Refresh(); Thread.Sleep(100); Package.AddRow("[bold yellow]Version : [/]", $"{package.Version.ToString()}"); context.Refresh(); Thread.Sleep(100); Package.AddRow("[bold yellow]Size : [/]", $"{package.Size.ToString()}B"); context.Refresh(); Thread.Sleep(100); Package.AddRow("[bold yellow]SHA256 : [/]", $"{package.SHA256}"); context.Refresh(); Thread.Sleep(100); Package.AddRow("[bold yellow]Filename : [/]", $"{package.Filename}"); context.Refresh(); }); } static void RenderPackagesTable(List Packages) { Table PackageTable = new Table() .Centered() .Expand() .Border(TableBorder.Rounded) .Title("Packages"); AnsiConsole.Live(PackageTable) .AutoClear(false) .Start(context => { PackageTable .AddColumn("[bold]PackageName[/]") .AddColumn("[bold]Version[/]") .AddColumn("[bold]Size (bytes)[/]") .AddColumn("[bold]SHA256[/]") .AddColumn("[bold]Filename[/]"); context.Refresh(); Thread.Sleep(500); foreach (var pack in Packages) { PackageTable.AddRow( FormatPackageName(pack.PackageName), $"[i blue]{pack.Version.ToString()}[/]", $"[grey]{pack.Size.ToString()}[/][b]B[/]", pack.SHA256, pack.Filename); context.Refresh(); Thread.Sleep(100); } }); } static string FormatPackageName(string name) { if (name.Contains("dev")) { return $"[red]{name}[/]"; } if (name.Contains("beta")) { return $"[yellow]{name}[/]"; } if (name.Contains("stable")) { return $"[green]{name}[/]"; } return name; } static void RenderReleaseTable(ReleaseData data) { // Lets output this ReleaseData now Table ReleaseTable = new Table() .Centered() .Border(TableBorder.Rounded) .Expand() .Title("Release Data"); AnsiConsole.Live(ReleaseTable) .AutoClear(false) .Start(context => { ReleaseTable.AddColumn("[bold]Field[/]"); ReleaseTable.AddColumn("[bold]Value[/]"); context.Refresh(); Thread.Sleep(500); ReleaseTable.AddRow("[bold yellow]Date:[/]", $"[blue]{data.Date:R}[/]"); context.Refresh(); Thread.Sleep(500); Table archs = new Table() .Centered() .Border(TableBorder.None) .HideFooters() .HideHeaders() .AddColumn(new TableColumn(Text.Empty)); ReleaseTable.AddRow(new Markup("[bold yellow]Architectures:[/]"), archs); foreach (var arch in data.Architectures) { archs.AddRow(arch); context.Refresh(); Thread.Sleep(250); } Table PackageFilesTable = new Table() .Centered() .Border(TableBorder.Square) .BorderColor(Color.Red) .AddColumn("[bold]Filename[/]") .AddColumn("[bold]Checksum[/]") .AddColumn("[bold]Size[/]"); ReleaseTable.AddRow( new Markup("[bold yellow]Package Files:[/]"), PackageFilesTable); context.Refresh(); foreach (var PackageFile in data.PackageFiles) { PackageFilesTable.AddRow(PackageFile.filename, PackageFile.Checksum, PackageFile.size.ToString()); context.Refresh(); Thread.Sleep(250); } }); } }