private IBuilderProvider GetBuilderProvider(IPipelineWorkspaceManagers workspaces, string basePath) { BuilderRegistry result = new BuilderRegistry(); result.Register <ICodeFileDestination>(new WorkspaceCodeFileDestinationBuilder(workspaces)); result.Register <ICodeFileDestination>(new FileSystemCodeFileDestinationBuilder(this.fileSystem, basePath), "fileSystem"); result.Register <ICodeFileSelector>(new CodeFileSelectorBuilder()); return(result); }
public void CanConstructPipeine() { var fileSystem = new Mock <IFileSystem>(MockBehavior.Strict).Object; var logger = new Mock <ILogger>(MockBehavior.Loose).Object; var basePath = "z:\\fakepath"; var workspaceManager = new WorkspaceManager(TestWorkspaceFactory.GetWorkspace()); PipelineWorkspaceManagersWrapper workspaces = new PipelineWorkspaceManagersWrapper(workspaceManager, workspaceManager); BuilderRegistry builders = new BuilderRegistry(); builders.Register <ICodeFileDestination>(new WorkspaceCodeFileDestinationBuilder(workspaces)); builders.Register <ICodeFileSelector>(new CodeFileSelectorBuilder()); var config = JObject.Parse(Resources.IntegrationTestConfig01); var subject = new PipelineBuilder(builders, workspaces, basePath, fileSystem, new DefaultTypeLoader(), logger); var result = subject.Build(config); result.Should().NotBeNull(); var pipeline = result as CodeGenerationPipeline; pipeline.InputCodeStreamProvider.Should().NotBeNull(); pipeline.PipelineEnvironment.Should().NotBeNull(); pipeline.Batches.Should().NotBeNull(); pipeline.Batches.Count.Should().Be(1); pipeline.Batches[0].Shadow.Should().NotBeNull(); pipeline.Batches[0].Shadow.Count.Should().Be(1); pipeline.Batches[0].Shadow[0].Language.Should().Be("CSharp"); pipeline.Batches[0].Shadow[0].Filter.Should().NotBeNull(); pipeline.Batches[0].Shadow[0].Filter.Should().BeOfType <WorkspaceCodeFileLocationFilter>(); }
public static void Main() { var messageBoard = PrepareMessageBoard(); builders = new BuilderRegistry(); fileSystem = new FileSystem(); quit = false; IInput input; PrepareIO(out input, out output); try { input.Init(); output.Init(); } catch (Exception e) { Console.WriteLine("Exception occurred while initializing input/output: {0}", e.Message); return; } // Main loop. while (!quit && input.MoveNext()) { // Split input on whitespace. var tokens = input.CurrentInput.Split(); if (tokens.Length == 0) continue; // Retrieve command builder. CommandBuilder builder; if (!builders.TryGetBuilder(tokens[0], out builder)) { WriteErrorLine("unknown command."); continue; } // Prepare arguments array. var arguments = new string[tokens.Length - 1]; for (int i = 0; i < arguments.Length; i++) arguments[i] = tokens[i + 1]; // Build command. object command; if (!builder.TryBuildCommand(arguments, out command)) { WriteErrorLine("invalid arguments."); continue; } // Dispatch. try { messageBoard.Send(command); } catch (FileSystemException e) { WriteErrorLine(e.Message); } catch (NotImplementedException) { WriteErrorLine("not implemented"); } } output.Dispose(); input.Dispose(); }