Exemplo n.º 1
0
        private void TriggerDependeees(string path, string messageType)
        {
            // temp: run [dnu|kpm] restore when project.json changed
            var project = _context.GetProject(path);

            if (project != null)
            {
                _packagesRestoreTool.Run(project);
            }

            var seen    = new HashSet <string>();
            var results = new HashSet <int>();
            var stack   = new Stack <string>();

            stack.Push(path);

            while (stack.Count > 0)
            {
                var projectPath = stack.Pop();

                if (!seen.Add(projectPath))
                {
                    continue;
                }

                int contextId;
                if (_context.ProjectContextMapping.TryGetValue(projectPath, out contextId))
                {
                    results.Add(contextId);

                    foreach (var frameworkProject in _context.Projects[contextId].ProjectsByFramework.Values)
                    {
                        foreach (var dependee in frameworkProject.ProjectDependeees.Keys)
                        {
                            stack.Push(dependee);
                        }
                    }
                }
            }

            foreach (var contextId in results)
            {
                var message = new Message();
                message.HostId      = _context.HostId;
                message.ContextId   = contextId;
                message.MessageType = messageType;
                _context.Connection.Post(message);
            }
        }