SessionZero-Client/tools/szpack/PackCommand.cs

43 lines
1.6 KiB
C#

/*
* WARNING:
* This tool was created by an LLM based on the SessionZero shared lib project, therefore it is subject to errors and does not reflect the architecture of the SessionZero project.
* It was created to be used as a quick and dirty validation tool for the szpack format.
*/
using SessionZero.Shared.Services;
using Spectre.Console;
using Spectre.Console.Cli;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
namespace SessionZero.Tools.Packer;
public class PackSettings : CommandSettings
{
[CommandArgument(0, "<input>")]
[Description("The root directory of the datapack to pack.")]
public required string Input { get; init; }
}
public class PackCommand : Command<PackSettings>
{
public override int Execute([NotNull] CommandContext context, [NotNull] PackSettings settings, CancellationToken cancellationToken)
{
AnsiConsole.MarkupLine($"\n[bold white on blue] --- Packing Datapack: {settings.Input} --- [/]");
try
{
var packDirectoryName = new DirectoryInfo(settings.Input).Name;
var outputFilePath = Path.Combine(Path.GetDirectoryName(settings.Input) ?? Environment.CurrentDirectory, $"{packDirectoryName}.szpack");
DatapackService.PackDatapack(settings.Input, outputFilePath);
AnsiConsole.MarkupLine($"[green]✅ Successfully created archive: {outputFilePath}[/]");
return 0;
}
catch (Exception ex)
{
AnsiConsole.MarkupLine($"\n[bold white on red]❌ ERROR:[/] Failed to pack datapack. Details: {ex.Message}");
return 1;
}
}
}