12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- using System.IO;
- using UnityEditor;
- using UnityEngine;
- using LLM.Editor.Helper;
- using JetBrains.Annotations;
- namespace LLM.Editor.Commands
- {
- [System.Serializable]
- public class EditScriptParams
- {
- public string scriptIdentifier;
- public string newScriptContent;
- }
- [UsedImplicitly]
- public class EditScriptCommand : ICommand
- {
- private readonly EditScriptParams _params;
- public EditScriptCommand(string jsonParams)
- {
- _params = jsonParams?.FromJson<EditScriptParams>();
- }
-
- public CommandOutcome Execute(Data.CommandContext context)
- {
- if (_params == null || string.IsNullOrEmpty(_params.scriptIdentifier) || string.IsNullOrEmpty(_params.newScriptContent))
- {
- Debug.LogError("[EditScriptCommand] Invalid parameters. Script identifier and new content are required.");
- return CommandOutcome.Error;
- }
- var path = AssetDatabase.GUIDToAssetPath(_params.scriptIdentifier);
- if (string.IsNullOrEmpty(path) || !path.EndsWith(".cs"))
- {
- Debug.LogError($"[EditScriptCommand] Could not find a valid script with GUID '{_params.scriptIdentifier}'.");
- return CommandOutcome.Error;
- }
- try
- {
- File.WriteAllText(path, _params.newScriptContent);
- Debug.Log($"[EditScriptCommand] Successfully edited script at: {path}");
- AssetDatabase.Refresh();
- return CommandOutcome.Success;
- }
- catch (System.Exception e)
- {
- Debug.LogError($"[EditScriptCommand] Failed to write to file at '{path}'. Error: {e.Message}");
- return CommandOutcome.Error;
- }
- }
- }
- }
|