using SPTInstaller.Interfaces;
using SPTInstaller.Models;
using System.Threading.Tasks;
using SPTInstaller.Helpers;

namespace SPTInstaller.Installer_Tasks;

public class CopyClientTask : InstallerTaskBase
{
    private InternalData _data;

    public CopyClientTask(InternalData data) : base("Copy Client Files")
    {
        _data = data;
    }

    public override async Task<IResult> TaskOperation()
    {
        SetStatus("Copying Client Files", "", 0);

        var originalGameDirInfo = new DirectoryInfo(_data.OriginalGamePath);
        var targetInstallDirInfo = new DirectoryInfo(_data.TargetInstallPath);

        // relative path for exclusions
        var exclusions = new[] { "\\Logs" };

        return FileHelper.CopyDirectoryWithProgress(originalGameDirInfo, targetInstallDirInfo, (message, progress) => { SetStatus(null, message, progress, null, true); }, exclusions);
    }
}