Exemplo n.º 1
0
 private void EmitProject(string eventType, DotNetProjectInformation information)
 {
     _emitter.Emit(
         eventType,
         new ProjectInformationResponse()
     {
         { "DotNetProject", information }
     });
 }
Exemplo n.º 2
0
        public void Update(string projectDirectory,
                           IEnumerable <ProjectContext> contexts,
                           Action <ProjectId, ProjectContext> addAction,
                           Action <ProjectId> removeAction)
        {
            _logger.LogDebug($"Updating project ${projectDirectory}");

            bool added;
            var  entry = GetOrAddEntry(projectDirectory, out added);

            // remove frameworks which don't exist after update
            var remove = entry.Frameworks.Except(contexts.Select(c => c.TargetFramework));

            foreach (var each in remove)
            {
                var toRemove = entry.Get(each);
                removeAction(toRemove.Id);
                entry.Remove(each);
            }

            foreach (var context in contexts)
            {
                _logger.LogDebug($"  For context {context.TargetFramework}");
                ProjectState currentState = entry.Get(context.TargetFramework);
                if (currentState != null)
                {
                    _logger.LogDebug($"  Update exsiting {nameof(ProjectState)}.");
                    currentState.ProjectContext = context;
                }
                else
                {
                    _logger.LogDebug($"  Add new {nameof(ProjectState)}.");
                    var projectId = ProjectId.CreateNewId();
                    entry.Set(new ProjectState(projectId, context));
                    addAction(projectId, context);
                }
            }

            var projectInformation = new DotNetProjectInformation(entry);

            if (added)
            {
                EmitProject(EventTypes.ProjectChanged, projectInformation);
            }
            else
            {
                EmitProject(EventTypes.ProjectAdded, projectInformation);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Remove projects not in the give project set and execute the <paramref name="removeAction"/> on the removed project id.
        /// </summary>
        /// <param name="perservedProjects">Projects to perserve</param>
        /// <param name="removeAction"></param>
        public void RemoveExcept(IEnumerable <string> perservedProjects, Action <ProjectEntry> removeAction)
        {
            var removeList = new HashSet <string>(_projects.Keys, StringComparer.OrdinalIgnoreCase);

            removeList.ExceptWith(perservedProjects);

            foreach (var key in removeList)
            {
                var entry = _projects[key];
                var projectInformation = new DotNetProjectInformation(entry);

                EmitProject(EventTypes.ProjectRemoved, projectInformation);
                removeAction(entry);

                _projects.Remove(key);
            }
        }
Exemplo n.º 4
0
        public Task <object> GetProjectModel(string path)
        {
            _logger.LogDebug($"GetProjectModel {path}");
            var document = _omnisharpWorkspace.GetDocument(path);

            if (document == null)
            {
                return(Task.FromResult <object>(null));
            }

            var projectPath = document.Project.FilePath;

            _logger.LogDebug($"GetProjectModel {path}=>{projectPath}");
            var projectEntry       = _projectStates.GetOrAddEntry(projectPath);
            var projectInformation = new DotNetProjectInformation(projectEntry);

            return(Task.FromResult <object>(projectInformation));
        }