55 lines
2.0 KiB
C#
55 lines
2.0 KiB
C#
#if UNITY_EDITOR
|
|
using System;
|
|
using System.IO;
|
|
using UnityEditor;
|
|
using UnityEditor.Build;
|
|
using UnityEditor.Build.Reporting;
|
|
using UnityEngine;
|
|
|
|
[Serializable] class SupabaseClientSecrets { public string url; public string anonKey; }
|
|
|
|
public class GenerateSupabaseSecretsPrebuild : IPreprocessBuildWithReport
|
|
{
|
|
public int callbackOrder => 0;
|
|
|
|
public void OnPreprocessBuild(BuildReport report)
|
|
{
|
|
// 1) read from Cloud Build env (populated from project secrets)
|
|
var url = Environment.GetEnvironmentVariable("SUPABASE_URL");
|
|
var anonKey = Environment.GetEnvironmentVariable("SUPABASE_ANON");
|
|
|
|
// 2) local dev override (git-ignored)
|
|
var devPath = Path.Combine(Application.dataPath, "Editor/supabase.secrets.dev.json");
|
|
if (File.Exists(devPath))
|
|
{
|
|
try
|
|
{
|
|
var dev = JsonUtility.FromJson<SupabaseClientSecrets>(File.ReadAllText(devPath));
|
|
if (!string.IsNullOrWhiteSpace(dev.url)) url = dev.url;
|
|
if (!string.IsNullOrWhiteSpace(dev.anonKey)) anonKey = dev.anonKey;
|
|
}
|
|
catch { Debug.LogWarning("Invalid supabase.secrets.dev.json; ignoring."); }
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(url) || string.IsNullOrWhiteSpace(anonKey))
|
|
throw new BuildFailedException("Missing SUPABASE_URL or SUPABASE_ANON_KEY.");
|
|
|
|
var json = JsonUtility.ToJson(new SupabaseClientSecrets { url = url, anonKey = anonKey }, false);
|
|
|
|
var resDir = Path.Combine(Application.dataPath, "Resources");
|
|
Directory.CreateDirectory(resDir);
|
|
var outPath = Path.Combine(resDir, "SupabaseClientSecrets.json");
|
|
File.WriteAllText(outPath, json);
|
|
|
|
AssetDatabase.ImportAsset(RelativeToProject(outPath));
|
|
Debug.Log("Embedded SupabaseClientSecrets.json");
|
|
}
|
|
|
|
static string RelativeToProject(string abs)
|
|
{
|
|
var root = Application.dataPath[..^"Assets".Length];
|
|
return abs.Replace(root, "").Replace("\\", "/");
|
|
}
|
|
}
|
|
#endif
|