private void AddDependencies(TaskRunnerNode uninstallNode, string configPath, string cwd) { var tasks = TaskParser.LoadDependencies(configPath); string allPackages = string.Join(" ", tasks.Values.SelectMany(t => t)); uninstallNode.Command.Args = $"/c npm uninstall {allPackages} --color=always"; foreach (var dep in tasks.Keys) { var depPackages = string.Join(" ", tasks[dep]); var depNode = CreateTask(cwd, dep, $"npm uninstall {depPackages}"); foreach (var package in tasks[dep]) { var child = CreateTask(cwd, $"uninstall {package}", $"npm uninstall {package}"); depNode.Children.Add(child); } uninstallNode.Children.Add(depNode); } }
private ITaskRunnerNode LoadHierarchy(string configPath) { var cliCommandName = GetCliCommandName(configPath); SetRootNodeIcon(cliCommandName); bool isNpm = (cliCommandName == Constants.NPM_CLI_COMMAND); ITaskRunnerNode root = new TaskNode(Vsix.Name, false, isNpm); var scripts = TaskParser.LoadTasks(configPath, cliCommandName); var hierarchy = GetHierarchy(scripts.Keys); IEnumerable <string> allDefaultTasks = (isNpm ? Constants.NPM_ALL_DEFAULT_TASKS : Constants.YARN_ALL_DEFAULT_TASKS); var defaults = hierarchy.Where(h => allDefaultTasks.Contains(h.Key)); TaskNode defaultTasks = new TaskNode("Defaults", false, isNpm); defaultTasks.Description = $"Default predefined {cliCommandName} commands."; root.Children.Add(defaultTasks); AddCommands(configPath, scripts, defaults, defaultTasks, isNpm); if (hierarchy.Count != defaults.Count()) { var customs = hierarchy.Except(defaults); TaskNode customTasks = new TaskNode("Custom", false, isNpm); customTasks.Description = $"Custom {cliCommandName} commands."; root.Children.Add(customTasks); AddCommands(configPath, scripts, customs, customTasks, isNpm); } return(root); }