namespace XGame.Editor.Build
{
internal static class BuildCommandExt
{
public static void Start(this IBuildCommand cmd)
{
if (cmd is ICommandExecuter executer)
{
var code = executer.Execute();
var context = cmd as IBuildContextAdapter;
BuildLog.Log($"ICommandExecuter Completed. Type:{executer.GetType()} Code:{code}");
BuildUtils.CmdCompleted(code, context?.Context);
}
else if (cmd is ICommandExecuterAsync executerAsync)
{
executerAsync.Execute();
}
else
{
BuildLog.Error($"IBuildCommand Execute Error: No Implemented ICommandExecuter or ICommandExecuterAsync. Type:{cmd?.GetType()}");
var context = cmd as IBuildContextAdapter;
BuildUtils.CmdCompleted(BuildErrorCode.CommandExecuteFailed, context?.Context);
}
}
///
/// 异步Command的结束方法
///
///
///
///
public static void Completed(this T cmdAsync, BuildErrorCode code = BuildErrorCode.CmdCompleted) where T : class, ICommandExecuterAsync
{
//if (cmdAsync == null)
//{
// BuildLog.Error($"ICommandExecuterAsync is null. code:{code}");
// return;
//}
var context = cmdAsync as IBuildContextAdapter;
//if (context == null)
//{
// BuildLog.Error($"ICommandExecuterAsync Context is null. code:{code}");
// return;
//}
BuildLog.Log($"ICommandExecuterAsync Completed. Type:{cmdAsync?.GetType()} Code:{code}");
BuildUtils.CmdCompleted(code, context?.Context);
}
}
}