using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Wabbajack.Common
{
    public class TempFolder : IDisposable
    {
        public DirectoryInfo Dir { get; private set; }
        public bool DeleteAfter = true;

        public TempFolder(bool deleteAfter = true)
        {
            this.Dir = new DirectoryInfo(Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()));
            this.Dir.Create();
            this.DeleteAfter = deleteAfter;
        }

        public TempFolder(DirectoryInfo dir, bool deleteAfter = true)
        {
            this.Dir = dir;
            if (!dir.Exists)
            {
                this.Dir.Create();
            }
            this.DeleteAfter = deleteAfter;
        }

        public TempFolder(string addedFolderPath, bool deleteAfter = true)
            : this(new DirectoryInfo(Path.Combine(Path.GetTempPath(), addedFolderPath)), deleteAfter: deleteAfter)
        {
        }

        public void Dispose()
        {
            if (DeleteAfter)
            {
                Utils.DeleteDirectory(this.Dir.FullName);
            }
        }
    }
}