public void TransfromDirectory(string projectDirectory) { using (var scope = _containerFactory.CreateScope()) { var logStream = scope.Resolve <ILogStream>(); var projectTransformation = scope.Resolve <IQuokkaProjectTransformation>(); var config = QuokkaConfigLoader.Load(projectDirectory); var projectPath = CSharpProject.GetSingleProjectFromFolder(projectDirectory); var projectReferences = CSharpProject.RecursiveCollectProjectReferences(projectPath); var projectFolders = projectReferences.Select(p => Path.GetDirectoryName(p)); var codeFiles = projectFolders.Select(folder => { var allFiles = new List <string>(); CSharpProject.CollectFiles(folder, allFiles); return(allFiles.Select(f => { var content = ""; FileTools.TryReadAllText(f, out content); return new SourceFileSnapshot() { ProjectName = CSharpProject.GetSingleProjectFromFolder(folder), FullPath = f, Content = content }; })); }).SelectMany(s => s); var transformedCode = new SourceCodeSnapshot( projectTransformation.Transform( new TransformationRequest() { Sources = codeFiles.ToList(), Configurations = config.Configurations }).Result.Result); new QuartusProjectTools(logStream).SaveCodeSnapshot( transformedCode, config.Project, config.ProjectLocation, config.Configurations.Select(c => c.Name).ToHashSet()); } }
void EventHandler(IEnumerable <FSEvent> list) { var projectFiles = list.Where(e => Path.GetExtension(e.FullPath) == CSharpProject.CSharpProjectExtension); if (projectFiles.Any()) { DisposeWatchers(); var projectReferences = CSharpProject.RecursiveCollectProjectReferences(ProjectPath); var projectFolders = projectReferences.Select(r => Path.GetDirectoryName(r)); watchers = projectFolders.Select(p => new FSWatcher(_logStream, p)).ToList(); watchers.ForEach(w => w.Subscribe(e => _fsStream.OnNext(e))); _logStream.WriteLine(eContentDomain.Public, "Projects were changed"); _stream.OnNext(new ProjectFoldersSnapshot(projectFolders)); } }