Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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>();
        }
Ejemplo n.º 3
0
        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();
        }