using System.Diagnostics;

namespace NubLang.CLI;

public static class Archive
{
    public static async Task<bool> Invoke(string fileName, params IEnumerable<string> objectFiles)
    {
        using var process = new Process();
        process.StartInfo = new ProcessStartInfo("ar", ["rcs", fileName, ..objectFiles])
        {
            UseShellExecute = false,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            CreateNoWindow = true
        };

        process.Start();
        await process.WaitForExitAsync();

        var errors = await process.StandardError.ReadToEndAsync();
        if (!string.IsNullOrWhiteSpace(errors))
        {
            await Console.Error.WriteLineAsync("ar error when archiving:\n" + errors);
        }

        return process.ExitCode == 0;
    }
}