コード例 #1
0
        public CDockerComposeFile Build(CMetaRepo metaRepo)
        {
            //todo: switch to Visitor pattern
            var relativePathBuilder = new RelativePathBuilder();
            var dockerComposeFile   = new CDockerComposeFile();

            foreach (var repo in metaRepo.Repos)
            {
                foreach (var solution in repo.RepoSolution)
                {
                    foreach (var project in solution.Project)
                    {
                        if (!project.HasDockerFile)
                        {
                            continue;
                        }

                        //todo: move this into domain model ?
                        var relativePath = relativePathBuilder
                                           .GetRelativePath(metaRepo.CompositeRepo.RepoSolution.First().SolutionPath,
                                                            Path.GetDirectoryName(project.Path)).Replace(@"\", @"/");

                        dockerComposeFile.Service.Add(new CDockerFileService
                        {
                            ServiceName = project.ProjectShortName.ToLower().Replace(".", "_"),
                            Context     = $"./{relativePath}"
                        });
                    }
                }
            }

            return(dockerComposeFile);
        }
コード例 #2
0
        public CDockerComposeFile Build()
        {
            var dockerComposeFile = new CDockerComposeFile();

            dockerComposeFile.Service.Add(new CDockerFileService
            {
                //  ServiceName = project.ProjectShortName.ToLower().Replace(".", "_"),
                //  Context = $"./{relativePath}"
            });

            return(dockerComposeFile);
        }
コード例 #3
0
        public void FileShouldHave1Line()
        {
            //Arrange
            var dockerCompose = new CDockerComposeFile();
            var codeWriter    = new CodeWriter();
            var logger        = new Mock <ILogger <CDockerComposeFileVisitor> >();
            var vi            = new Mock <IVisitor>();
            var visitor       = new CDockerComposeFileVisitor(codeWriter, logger.Object);

            //Act
            visitor.Visit(vi.Object, dockerCompose);

            //Assert

            Assert.AreEqual(1, codeWriter.LineCount);
        }
コード例 #4
0
        public void Visit(IVisitor visitor, CDockerComposeFile dockerComposeFile)
        {
            CodeWriter.Clear();
            CodeWriter.WriteLine("version: '3'");

            if (dockerComposeFile.Service.Count > 0)
            {
                CodeWriter.WriteLine();
                CodeWriter.WriteLine("services:");
                CodeWriter.Indent();
            }

            foreach (var service in dockerComposeFile.Service)
            {
                service.Accept(visitor);
            }

            if (dockerComposeFile.Service.Count > 0)
            {
                CodeWriter.Unindent();
            }
        }
コード例 #5
0
 public void Visit(CDockerComposeFile dockerComposeFile)
 {
     _dockerComposeVisitor.Visit(this, dockerComposeFile);
 }