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 CMetaRepo BuildSampleMetaRepo() { var metaRepo = new CMetaRepo() { MetaRepoName = "BlahAndBlahBlahMega" }; metaRepo.AddRepos(GetBlahRepos()); metaRepo.AddRepos(GetBlahBlahRepos()); metaRepo.AddRepos(GetCommonRepos()); return(metaRepo); }
public void Visit(IVisitor visitor, CMetaRepo metaRepo) { foreach (var repo in metaRepo.Repos) { foreach (var solution in repo.RepoSolution) { foreach (var project in solution.Project) { CodeWriter.WriteLine($@"dotnet sln Company.All.Sln add ""{project.Path}"""); } } } }
public void Visit(IVisitor visitor, CMetaRepo metaRepo) { CodeWriter.Clear(); CodeWriter.WriteLine("call npm install -g meta"); CodeWriter.WriteLine(); CodeWriter.WriteLine("call meta init"); CodeWriter.WriteLine(); //CodeWriter.WriteLine("setlocal enableDelayedExpansion"); foreach (var repo in metaRepo.Repos) { repo.Accept(visitor); } //CodeWriter.WriteLine("endlocal"); CodeWriter.WriteLine(); CodeWriter.WriteLine($"CMD /c meta git fetch --all"); CodeWriter.WriteLine($"CMD /c meta git checkout --track remotes/origin/{metaRepo.CheckoutFromBranch}"); CodeWriter.WriteLine($"CMD /c meta git pull"); CodeWriter.WriteLine($"CMD /c meta git checkout Poc_XXXXXX"); }
public void Visit(CMetaRepo metaRepo) { _metaRepoVisitor.Visit(this, metaRepo); }