Exemplo n.º 1
0
        private static async Task DeleteDefaultRepoAsync(
            Waddle.RepositoryService repoService,
            Waddle.Dtos.Project project, bool projectWasAbsent)
        {
            if (projectWasAbsent)
            {
                // when new projects are created, there's a defaul repository
                // let's remove that
                var allRepos = await repoService.GetRepositoryListAsync(project.Id);

                if (allRepos != null && allRepos.Count > 0)
                {
                    await repoService.DeleteRepositoryAsync(project.Id, allRepos.First().Id);
                }
            }
        }
Exemplo n.º 2
0
        private async Task EnsureRepositoriesExistsAsync(
            ProjectManifest manifest, Waddle.AdoConnectionFactory factory,
            Waddle.RepositoryService repoService,
            Waddle.Dtos.Project project,
            bool projectWasAbsent)
        {
            if (project != null && manifest.Repositories != null && manifest.Repositories.Any())
            {
                foreach (var repo in manifest.Repositories)
                {
                    if (!string.IsNullOrWhiteSpace(repo.Name))
                    {
                        var reposCollection = await repoService.GetRepositoryListAsync(project.Id);

                        var repository = reposCollection
                                         .FirstOrDefault(r => r.Name.Equals(repo.Name, StringComparison.OrdinalIgnoreCase));

                        if (repository == null)
                        {
                            Logger.StatusBegin($"Creating Repository {repo.Name}...");
                            await ExecutionSupports.Retry(async() =>
                            {
                                repository = await repoService.CreateAsync(project.Id, repo.Name);
                            },
                                                          exception => { Logger.SilentError(exception.Message); });

                            Logger.StatusEndSuccess("Succeed");
                        }
                        Logger.StatusBegin($"Setting up permissions for repository {repo.Name}...");
                        await EnsureRepositoryPermissionsAsync(factory, project, repo, repository);

                        Logger.StatusEndSuccess("Succeed");
                    }
                }
                await DeleteDefaultRepoAsync(repoService, project, projectWasAbsent);
            }
        }