using System.IO;
using UnityEditor;
using UnityEngine;

namespace VRCExpressionSetupTool.Editor.Utility
{
    public class AssetUtil
    {
        public static void CreateAssetWithOverwrite(Object asset, string exportPath)
        {
            if (!File.Exists(exportPath))
            {
                AssetDatabase.CreateAsset(asset, exportPath);
                return;
            }
            
            var fileName = Path.GetFileName(exportPath);
            var tmpDirectoryPath = Path.Combine(exportPath.Replace(fileName, ""), "tmp");
            Directory.CreateDirectory(tmpDirectoryPath);
            
            var tmpFilePath = Path.Combine(tmpDirectoryPath, fileName);
            AssetDatabase.CreateAsset(asset, tmpFilePath);
            
            FileUtil.ReplaceFile(tmpFilePath, exportPath);

            AssetDatabase.DeleteAsset(tmpDirectoryPath);
            AssetDatabase.ImportAsset(exportPath);
        }
    }
}