using Avalonia;
using Predictalytics.Shell.Services;

namespace Predictalytics.Shell;

internal static class Program
{
    [STAThread]
    public static int Main(string[] args)
    {
        // Die Argumentauswertung steht bewusst vor jeder Avalonia-Initialisierung:
        // auf einem Server ohne X11 wuerde der Prozess sonst beim Aufbau des
        // Fenstersystems sterben, bevor die Schalter ueberhaupt greifen.
        if (LicenseCli.IsLicenseCommand(args))
        {
            ConsoleAttach.TryAttachToParent();
            return LicenseCli.RunAsync(args).GetAwaiter().GetResult();
        }

        if (args.Any(a => string.Equals(a, "--headless", StringComparison.OrdinalIgnoreCase)))
        {
            ConsoleAttach.TryAttachToParent();
            return HeadlessRunner.RunAsync().GetAwaiter().GetResult();
        }

        return BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
    }

    /// <summary>Wird auch vom Avalonia-Designer verwendet.</summary>
    public static AppBuilder BuildAvaloniaApp() =>
        AppBuilder.Configure<App>()
            .UsePlatformDetect()
            .WithInterFont()
            .LogToTrace();
}
