Files
natsnet/tools/NatsNet.PortTracker/Program.cs

39 lines
1.2 KiB
C#

using System.CommandLine;
using NatsNet.PortTracker.Commands;
using NatsNet.PortTracker.Data;
var dbOption = new Option<string>("--db")
{
Description = "Path to the SQLite database file",
DefaultValueFactory = _ => Path.Combine(Directory.GetCurrentDirectory(), "porting.db"),
Recursive = true
};
var schemaOption = new Option<string>("--schema")
{
Description = "Path to the SQL schema file",
DefaultValueFactory = _ => Path.Combine(Directory.GetCurrentDirectory(), "porting-schema.sql"),
Recursive = true
};
var rootCommand = new RootCommand("NATS .NET Porting Tracker");
rootCommand.Add(dbOption);
rootCommand.Add(schemaOption);
// init command
var initCommand = new Command("init", "Create or reset the database schema");
initCommand.SetAction(parseResult =>
{
var dbPath = parseResult.GetValue(dbOption)!;
var schemaPath = parseResult.GetValue(schemaOption)!;
using var db = new Database(dbPath);
Schema.Initialize(db, schemaPath);
Console.WriteLine($"Database initialized at {dbPath}");
});
rootCommand.Add(initCommand);
rootCommand.Add(ModuleCommands.Create(dbOption, schemaOption));
var parseResult = rootCommand.Parse(args);
return await parseResult.InvokeAsync();