/// <summary> /// Update the cache and execute the task with the updated files. /// </summary> internal void UpdateCacheAndExecute() { if (string.IsNullOrEmpty(path)) { return; } var input = FilterUpdatedFiles(); var completePath = Path.Combine("Assets", path); if (input.Length <= 0) { return; } foreach (var registeredTask in RegisteredTasks.Instance.Tasks) { var type = registeredTask.task.GetType(); if (registeredTask.fullName != classFullName) { break; } foreach (var iInterface in type.GetInterfaces()) { if (iInterface == typeof(IComboMultipleFilesTask)) { var multipleFilesTask = (IComboMultipleFilesTask)registeredTask.task; var taskName = registeredTask.task.GetType().Name; Logger.MultipleFilesTaskStarted(taskName, searchPattern, completePath); try { multipleFilesTask.OnCreateOrUpdateMultipleFiles(input); Logger.MultipleFilesTaskFinished(taskName, searchPattern, completePath); } catch (Exception e) { Logger.MultipleFilesTaskFailed(taskName, searchPattern, completePath, e); } break; } if (iInterface == typeof(IComboSingleFileTask)) { var singleFileTask = (IComboSingleFileTask)registeredTask.task; var taskName = registeredTask.task.GetType().Name; foreach (var updatedFile in input) { Logger.SingleFileTaskStart(taskName, updatedFile.path); try { singleFileTask.OnCreateOrUpdateSingleFile(updatedFile); Logger.SingleFileTaskFinished(taskName, updatedFile.path); } catch (Exception e) { Logger.SingleFileTaskFailed(taskName, updatedFile.path, e); } } break; } } } }
/// <summary> /// Execute the task over the deleted assets. /// </summary> /// <param name="deletedAssets"></param> internal void ExecuteDeletedEvent(string[] deletedAssets) { var completePath = Path.Combine("Assets", path); var input = new List <TaskFileInputData>(); if (deletedAssets.Length <= 0) { return; } foreach (var deletedPath in deletedAssets) { var inputFile = new TaskFileInputData(deletedPath); if (SearchPatternMatch(inputFile.path)) { input.Add(inputFile); } } foreach (var registeredTask in RegisteredTasks.Instance.Tasks) { var type = registeredTask.task.GetType(); if (registeredTask.fullName != classFullName) { break; } foreach (var iInterface in type.GetInterfaces()) { if (iInterface == typeof(IComboMultipleFilesTask)) { var multipleFilesTask = (IComboMultipleFilesTask)registeredTask.task; var taskName = registeredTask.task.GetType().Name; Logger.MultipleFilesTaskStarted(taskName, searchPattern, completePath); try { multipleFilesTask.OnDeleteMultipleFiles(input.ToArray()); Logger.MultipleFilesTaskFinished(taskName, searchPattern, completePath); } catch (Exception e) { Logger.MultipleFilesTaskFailed(taskName, searchPattern, completePath, e); } break; } if (iInterface == typeof(IComboSingleFileTask)) { var singleFileTask = (IComboSingleFileTask)registeredTask.task; var taskName = registeredTask.task.GetType().Name; foreach (var updatedFile in input) { Logger.SingleFileTaskStart(taskName, updatedFile.path); try { singleFileTask.OnDeleteSingleFile(updatedFile); Logger.SingleFileTaskFinished(taskName, updatedFile.path); } catch (Exception e) { Logger.SingleFileTaskFailed(taskName, updatedFile.path, e); } } break; } } } }