using System;
using System.IO;
using System.Text;
using UnityEngine;

namespace UnityEditor.U2D.Animation.Upgrading
{
    internal static class UpgradeLogWriter
    {
        const string k_LogSavePath = "/Logs/";

        public static string Generate(string content)
        {
            if (string.IsNullOrEmpty(content))
                return string.Empty;

            var path = Path.GetDirectoryName(Application.dataPath);
            path = Path.Join(path, k_LogSavePath);

            if (!Directory.Exists(path))
                Directory.CreateDirectory(path);

            var dateStamp = DateTime.Now.Ticks.ToString();
            var filePath = Path.Join(path, $"AssetUpgradingLog_{dateStamp}.txt");

            content = AddHeaderToContent(content);
            using (var file = File.CreateText(filePath))
            {
                file.Write(content);
            }

            return filePath;
        }

        static string AddHeaderToContent(string content)
        {
            var sb = new StringBuilder();
            sb.AppendLine(DateTime.Now.ToString());
            sb.AppendLine("Asset Upgrading");
            sb.AppendLine("---------------");
            sb.AppendLine(content);
            return sb.ToString();
        }
    }
}