using System.IO;
using UnityEditor;
using UnityEngine;

namespace Alibabacloud.Rum.Unity.Editor
{
    internal static class AlibabacloudScriptableObject
    {
        internal static T CreateOrLoad<T>(string path) where T : ScriptableObject
        {
            var options = Load<T>(path);
            if (options == null)
            {
                Directory.CreateDirectory(Path.GetDirectoryName(path));

                options = ScriptableObject.CreateInstance<T>();

                AssetDatabase.CreateAsset(options, path);
                AssetDatabase.SaveAssets();
            }

            return options;
        }

        internal static T? Load<T>(string path) where T : ScriptableObject => AssetDatabase.LoadAssetAtPath<T>(path);


        public static AlibabacloudOptions? LoadOptions(bool isBuilding = false)
        {
            return 
                Load<AlibabacloudOptions>(AlibabacloudOptions.GetConfigPath());
        }
    }
}
