Пример #1
0
        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));
            }
        }