Пример #1
0
        /// <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;
                    }
                }
            }
        }
Пример #2
0
        /// <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;
                    }
                }
            }
        }