feat(porttracker): add all remaining commands (feature, test, library, dependency, report, phase)

This commit is contained in:
Joseph Doherty
2026-02-26 06:17:43 -05:00
parent c31bf6050d
commit cecbb49653
8 changed files with 941 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
using System.CommandLine;
using NatsNet.PortTracker.Data;
using NatsNet.PortTracker.Reporting;
namespace NatsNet.PortTracker.Commands;
public static class ReportCommands
{
public static Command Create(Option<string> dbOption, Option<string> schemaOption)
{
var reportCommand = new Command("report", "Generate reports");
// summary
var summaryCmd = new Command("summary", "Show status summary");
summaryCmd.SetAction(parseResult =>
{
var dbPath = parseResult.GetValue(dbOption)!;
using var db = new Database(dbPath);
ReportGenerator.PrintSummary(db);
});
// export
var exportFormat = new Option<string>("--format") { Description = "Export format (md)", DefaultValueFactory = _ => "md" };
var exportOutput = new Option<string?>("--output") { Description = "Output file path (stdout if not specified)" };
var exportCmd = new Command("export", "Export status report");
exportCmd.Add(exportFormat);
exportCmd.Add(exportOutput);
exportCmd.SetAction(parseResult =>
{
var dbPath = parseResult.GetValue(dbOption)!;
var format = parseResult.GetValue(exportFormat)!;
var output = parseResult.GetValue(exportOutput);
using var db = new Database(dbPath);
if (format != "md")
{
Console.WriteLine($"Unsupported format: {format}. Supported: md");
return;
}
var markdown = ReportGenerator.ExportMarkdown(db);
if (output is not null)
{
File.WriteAllText(output, markdown);
Console.WriteLine($"Report exported to {output}");
}
else
{
Console.Write(markdown);
}
});
reportCommand.Add(summaryCmd);
reportCommand.Add(exportCmd);
return reportCommand;
}
}