Example #1
0
        private void ApplyOverrides(string configFileName, ITaskRunnerNode parent)
        {
            var currentExtensionMatch = Regex.Match(configFileName, "webpack\\.config\\.(?<ext>.+)$");
            var currentExtension      = currentExtensionMatch.Groups["ext"];

            var files = Directory
                        .EnumerateFiles(parent.Command.WorkingDirectory)
                        .Where(f => f.Contains("webpack.") && f.EndsWith($".config.{currentExtension}", StringComparison.OrdinalIgnoreCase));

            foreach (string file in files)
            {
                string fileName = Path.GetFileName(file);
                Match  match    = Regex.Match(fileName, $"webpack\\.(?<env>[^\\.]+)\\.config\\.{currentExtension}");

                if (!match.Success)
                {
                    continue;
                }

                var task = new TaskRunnerNode($"config: {match.Groups["env"].Value}", true)
                {
                    Description = $"Runs '{parent.Name} --config {fileName}'",
                    Command     = GetCommand(parent.Command.WorkingDirectory, $"{parent.Command.Args.Replace("webpack ", $"webpack --config {fileName} ")}")
                };

                parent.Children.Add(task);
            }
        }
Example #2
0
 public async Task <ITaskRunnerConfig> ParseConfig(ITaskRunnerCommandContext context, string configPath)
 {
     return(await Task.Run(async() => {
         ITaskRunnerNode hierarchy = await TryLoadHierarchy(configPath);
         return new GulpTaskRunnerConfig(hierarchy);
     }));
 }
Example #3
0
        public void ToggleBinding(TaskRunnerBindEvent bindEvent, ITaskRunnerNode task)
        {
            if (config == null)
            {
                return;
            }

            TaskRunnerBindingInformation binding = FindBinding(bindEvent);

            if (binding != null)
            {
                binding.ToggleTask(task);
                if (!binding.AnyTasks())
                {
                    bindings.Remove(binding);
                }
            }
            else
            {
                binding = new TaskRunnerBindingInformation(bindEvent, task);
                bindings.Add(binding);
            }

            config.SaveBindings(configFile, ToXml());
        }
Example #4
0
 IEnumerable <TaskRunnerTreeNode> GetChildNodes(ITaskRunnerNode task, bool bold = false)
 {
     foreach (ITaskRunnerNode childTask in task.Children)
     {
         yield return(new TaskRunnerTreeNode(taskRunnerInfo, childTask, bold));
     }
 }
Example #5
0
        private void AppendCommands(ref ITaskRunnerNode root, string configPath, string name, string description)
        {
            string rootDir = Path.GetDirectoryName(configPath);
            IEnumerable <CommandTask> commands = TaskParser.LoadTasks(configPath);

            if (commands == null)
            {
                return;
            }

            var tasks = new TaskRunnerNode(name);

            tasks.Description = description;
            root.Children.Add(tasks);

            foreach (CommandTask command in commands.OrderBy(k => k.Name))
            {
                command.Name             = SetVariables(command.Name, rootDir);
                command.WorkingDirectory = SetVariables(command.WorkingDirectory, rootDir);

                string cwd = command.WorkingDirectory ?? rootDir;

                // Add zero width space
                string commandName = command.Name;

                var task = new TaskRunnerNode(commandName, true)
                {
                    Command     = new DynamicTaskRunnerCommand(this, rootDir, cwd, command.FileName, command.Arguments),
                    Description = $"Filename:\t {command.FileName}\r\nArguments:\t {command.Arguments}"
                };

                tasks.Children.Add(task);
            }
        }
Example #6
0
 static string GetBuildWarning(ITaskRunnerNode task, ITaskRunnerCommandResult result)
 {
     return(GettextCatalog.GetString(
                "Task {0} failed with exit code {1}. Command: {2}",
                task.Name,
                result.ExitCode,
                task.Command.ToCommandLine()));
 }
Example #7
0
 void ToggleBinding(TaskRunnerInformation taskRunnerInfo, ITaskRunnerNode node, TaskRunnerBindEvent bindEvent)
 {
     try {
         taskRunnerInfo.ToggleBinding(bindEvent, node);
     } catch (Exception ex) {
         LoggingService.LogError("Toggle binding failed.", ex);
         MessageService.ShowError(GettextCatalog.GetString("Unable to change binding."), ex);
     }
 }
Example #8
0
 void RunTask(ITaskRunnerNode taskRunnerNode, IEnumerable <ITaskRunnerOption> options)
 {
     try {
         var task = new TaskRunnerWithOptions(taskRunnerNode, options);
         RunTaskAsync(task).Ignore();
     } catch (Exception ex) {
         LoggingService.LogError("TaskRunnerExplorerPad.RunTask error", ex);
     }
 }
        public async Task <ITaskRunnerConfig> ParseConfig(ITaskRunnerCommandContext context, string configPath)
        {
            return(await Task.Run(() =>
            {
                ITaskRunnerNode hierarchy = LoadHierarchy(configPath);

                return new TaskRunnerConfig(context, hierarchy, _icon);
            }));
        }
        /// <summary>
        /// Removes all errors for a given task and updates the CurrentSnapshot
        /// </summary>
        internal void ClearErrors(ITaskRunnerNode task)
        {
            List <IErrorListItem> taskErrors = _currentErrors.Where(e => IsSameCommand(e.Command, task.Command)).ToList();

            if (taskErrors.Any())
            {
                _currentErrors = _currentErrors.Except(taskErrors).ToList();
                UpdateErrors(new OutputErrorSnapshot(CurrentSnapshot.VersionNumber + 1, _currentErrors));
            }
        }
Example #11
0
        /// <summary>
        /// Parses a configuration file into ITaskRunnerConfig
        /// </summary>
        /// <param name="configPath"></param>
        /// <param name="taskRunnerOptions"></param>
        /// <param name="environmentPath"></param>
        /// <param name="projectItem"></param>
        /// <returns></returns>
        public async Task <ITaskRunnerConfig> ParseConfig(ITaskRunnerCommandContext context, string configPath)
        {
            //Custom
            await Geoffrey.EnsureInitialized(context);

            ITaskRunnerNode hierarchy = LoadHierarchy(configPath);

            //Common
            return(new TaskRunnerConfig <PowershellBindingsPersister>(context, hierarchy, _icon));
        }
Example #12
0
        public void ToggleTask(ITaskRunnerNode task)
        {
            int count = taskNames.Count;

            taskNames.RemoveAll(name => IsMatch(task, name));

            if (count == taskNames.Count)
            {
                taskNames.Add(task.Name);
            }
        }
Example #13
0
        public bool IsBindingEnabled(TaskRunnerBindEvent bindEvent, ITaskRunnerNode taskRunnerNode)
        {
            TaskRunnerBindingInformation binding = FindBinding(bindEvent);

            if (binding != null)
            {
                return(binding.HasTask(taskRunnerNode));
            }

            return(false);
        }
Example #14
0
        public TaskRunnerTreeNode(TaskRunnerInformation task, ITaskRunnerNode node, bool bold)
        {
            taskRunnerInfo = task;
            taskRunnerNode = node;

            Name = taskRunnerNode.Name ?? string.Empty;
            Icon = task.Icon;

            if (bold)
            {
                Name = Name.ToBoldMarkup();
            }
        }
Example #15
0
 public async Task <ITaskRunnerConfig> ParseConfig(ITaskRunnerCommandContext context, string configPath)
 {
     try {
         return(await Task.Run(() => {
             TaskRunnerLogger.WriteLine("TestTaskRunnerProvider.ParseConfig configPath={0}", configPath);
             ITaskRunnerNode hierarchy = LoadHierarchy(configPath);
             return new TaskRunnerConfig(hierarchy);
         }));
     } catch (Exception ex) {
         TaskRunnerLogger.WriteLine("Load failed. {0}", ex.Message);
         return(CreateErrorTaskRunnerConfig(ex));
     }
 }
Example #16
0
        public async Task <ITaskRunnerConfig> ParseConfig(ITaskRunnerCommandContext context, string configPath)
        {
            return(await Task.Run(() =>
            {
                ITaskRunnerNode hierarchy = LoadHierarchy(configPath);

                if (!hierarchy.Children.Any() && !hierarchy.Children.First().Children.Any())
                {
                    return null;
                }

                return new TaskRunnerConfig(this, context, hierarchy, _icon);
            }));
        }
Example #17
0
        public async Task <ITaskRunnerConfig> ParseConfig(ITaskRunnerCommandContext context, string configPath)
        {
            return(await Task.Run(() =>
            {
                if (!BundlerMinifierPackage.Options.EnableTaskRunnerExplorer)
                {
                    return null;
                }

                ITaskRunnerNode hierarchy = LoadHierarchy(configPath);

                return new TaskRunnerConfig(context, hierarchy, _icon);
            }));
        }
Example #18
0
        public async Task <ITaskRunnerConfig> ParseConfig(ITaskRunnerCommandContext context, string configPath)
        {
            return(await Task.Run(() =>
            {
                var userPathConfig = configPath.Replace(Constants.FILENAME, Constants.USERFILENAME);
                ITaskRunnerNode hierarchy = LoadHierarchy(configPath, userPathConfig);

                if (!hierarchy.Children.Any() && !hierarchy.Children.First().Children.Any())
                {
                    return null;
                }

                return new TaskRunnerConfig(hierarchy, _icon);
            }));
        }
Example #19
0
        static ITaskRunnerNode GetInvokableTask(string name, IEnumerable <ITaskRunnerNode> tasks)
        {
            foreach (ITaskRunnerNode task in tasks)
            {
                if (task.Invokable && task.Name == name)
                {
                    return(task);
                }

                ITaskRunnerNode foundTask = GetInvokableTask(name, task.Children);
                if (foundTask != null)
                {
                    return(foundTask);
                }
            }

            return(null);
        }
Example #20
0
        private void ApplyOverrides(ITaskRunnerNode parent)
        {
            var files = Directory.EnumerateFiles(parent.Command.WorkingDirectory).Where(f => f.Contains(".overrides."));

            foreach (string file in files)
            {
                int    dot  = file.LastIndexOf('.');
                string name = file.Substring(dot + 1);

                var task = new TaskRunnerNode($"env: {name}", true)
                {
                    Description = $"Runs '{parent.Name} --env {name}'",
                    Command     = GetCommand(parent.Command.WorkingDirectory, $"{parent.Command.Args} --env {name}")
                };

                parent.Children.Add(task);
            }
        }
Example #21
0
 public IEnumerable <TaskRunnerWithOptions> GetTasks(TaskRunnerBindEvent bindEvent)
 {
     foreach (TaskRunnerInformation task in Tasks)
     {
         foreach (TaskRunnerBindingInformation binding in task.Bindings)
         {
             if (binding.BindEvent == bindEvent)
             {
                 foreach (string taskName in binding.GetTasks())
                 {
                     ITaskRunnerNode node = task.GetInvokableTask(taskName);
                     if (node != null)
                     {
                         yield return(new TaskRunnerWithOptions(node, task.Options));
                     }
                 }
             }
         }
     }
 }
        private static List <IErrorListItem> RemoveErrorDuplicates(ITaskRunnerNode task,
                                                                   string projectName,
                                                                   OutputParserResult parserOutput,
                                                                   OutputErrorSnapshot currentSnapshot)
        {
            List <IErrorListItem> newErrors = new List <IErrorListItem>();

            foreach (IErrorListItem error in parserOutput.ErrorList)
            {
                error.ProjectName = projectName;
                error.ErrorSource = task.Name;
                error.Filename    = Path.Combine(task.Command.WorkingDirectory, error.Filename);
                error.Command     = task.Command;

                if (!currentSnapshot.Errors.Contains(error))
                {
                    newErrors.Add(error);
                }
            }

            return(newErrors);
        }
        /// <summary>
        /// Handles the command output (inputLines) and generates errors as appropriate.
        /// </summary>
        /// <param name="task">Task being executed</param>
        /// <param name="projectName">Project name of the task</param>
        /// <param name="inputLines">Set of command output messages to be parsed</param>
        /// <returns></returns>
        public IEnumerable <string> HandleLines(ITaskRunnerNode task, string projectName, IEnumerable <string> lines)
        {
            bool errorListNeedsUpdate = false;

            // Remove existing Factory errors associated with the running task after idle time
            if (_timer.ElapsedMilliseconds > 1000)
            {
                _factory.ClearErrors(task);
                errorListNeedsUpdate = true;
            }


            OutputParserResult parserOutput = _outputParser.ParseOutput(lines);

            if (parserOutput != null && parserOutput.ErrorList.Count() > 0)
            {
                OutputErrorSnapshot   currentSnapshot = _factory.CurrentSnapshot as OutputErrorSnapshot;
                List <IErrorListItem> newErrors       = RemoveErrorDuplicates(task, projectName, parserOutput, currentSnapshot);

                if (newErrors.Count > 0)
                {
                    _factory.AddErrorItems(newErrors);
                    errorListNeedsUpdate = true;
                }
            }

            // Only update the errors list if Factory errors has changed.
            if (errorListNeedsUpdate)
            {
                UpdateErrorsList();
            }

            // Reset and start the timer to measure new elapsed time between new line(s) inputs
            _timer.Reset();
            _timer.Start();

            return(parserOutput.OutputLines);
        }
 protected TaskRunnerConfigBase(ITaskRunnerCommandContext context, ITaskRunnerNode hierarchy)
 {
     TaskHierarchy = hierarchy;
     _context = context;
 }
Example #25
0
        private void ApplyOverrides(ITaskRunnerNode parent)
        {
            var files = Directory.EnumerateFiles(parent.Command.WorkingDirectory).Where(f => f.Contains("webpack.") && f.EndsWith(".config.js"));

            foreach (string file in files)
            {
                string fileName = Path.GetFileName(file);
                Match match = Regex.Match(fileName, "webpack\\.(?<env>[^\\.]+)\\.config(\\.babel)?\\.js");

                if (!match.Success)
                    continue;

                var task = new TaskRunnerNode($"config: {match.Groups["env"].Value}", true)
                {
                    Description = $"Runs '{parent.Name} --config {fileName}'",
                    Command = GetCommand(parent.Command.WorkingDirectory, $"{parent.Command.Args.Replace("webpack ", $"webpack --config {fileName} ")}")
                };

                parent.Children.Add(task);
            }
        }
 public TaskRunnerConfig(ITaskRunnerNode hierarchy, ImageSource icon)
 {
     _hierarchy = hierarchy;
     _icon      = icon;
 }
 protected TaskRunnerConfigBase(TaskRunnerProvider provider, ITaskRunnerCommandContext context, ITaskRunnerNode hierarchy)
 {
     _bindingsPersister = new BindingsPersister(provider);
     TaskHierarchy = hierarchy;
     _context = context;
 }
 public TaskRunnerConfig(ITaskRunnerCommandContext context, ITaskRunnerNode hierarchy)
     : base(context, hierarchy)
 {
 }
 public TaskRunnerConfig(ITaskRunnerCommandContext context, ITaskRunnerNode hierarchy, ImageSource rootNodeIcon)
     : this(context, hierarchy)
 {
     _rootNodeIcon = rootNodeIcon;
 }
 protected TaskRunnerConfigBase(ITaskRunnerCommandContext context, ITaskRunnerNode hierarchy)
 {
     TaskHierarchy = hierarchy;
     _context      = context;
 }
Example #31
0
 protected TaskRunnerConfigBase(TaskRunnerProvider provider, ITaskRunnerCommandContext context, ITaskRunnerNode hierarchy)
 {
     _bindingsPersister = new BindingsPersister(provider);
     TaskHierarchy      = hierarchy;
     _context           = context;
 }
        private void ApplyOverrides(ITaskRunnerNode parent)
        {
            var files = Directory.EnumerateFiles(parent.Command.WorkingDirectory).Where(f => f.Contains(".overrides."));

            foreach (string file in files)
            {
                int dot = file.LastIndexOf('.');
                string name = file.Substring(dot + 1);

                var task = new TaskRunnerNode($"env: {name}", true)
                {
                    Description = $"Runs '{parent.Name} --env {name}'",
                    Command = GetCommand(parent.Command.WorkingDirectory, $"{parent.Command.Args} --env {name}")
                };

                parent.Children.Add(task);
            }
        }
 public TaskRunnerConfig(ITaskRunnerCommandContext context, ITaskRunnerNode hierarchy, ImageSource icon)
 {
     _context      = context;
     TaskHierarchy = hierarchy;
     Icon          = icon;
 }
Example #34
0
 public TaskRunnerConfig(ITaskRunnerNode hierarchy)
 {
     TaskHierarchy = hierarchy;
 }
 public void Dispose()
 {
     _icon      = null;
     _hierarchy = null;
 }
Example #36
0
 public TaskRunnerConfig(ITaskRunnerCommandContext context, ITaskRunnerNode hierarchy, ImageSource icon)
 {
     _context = context;
     _hierarchy = hierarchy;
     _icon = icon;
 }
 public ManifestTaskRunnerConfig(ITaskRunnerNode rootNode)
 {
     TaskHierarchy = rootNode;
 }
 public TaskRunnerConfig(TaskRunnerProvider provider, ITaskRunnerCommandContext context, ITaskRunnerNode hierarchy)
     : base(provider, context, hierarchy)
 {
 }