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); }
public CDockerComposeFile Build() { var dockerComposeFile = new CDockerComposeFile(); dockerComposeFile.Service.Add(new CDockerFileService { // ServiceName = project.ProjectShortName.ToLower().Replace(".", "_"), // Context = $"./{relativePath}" }); return(dockerComposeFile); }
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); }
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(); } }
public void Visit(CDockerComposeFile dockerComposeFile) { _dockerComposeVisitor.Visit(this, dockerComposeFile); }