示例#1
0
        private async Task EnsureReleaseFoldersAsync(ProjectManifest manifest,
                                                     Waddle.AdoConnectionFactory factory, Waddle.Dtos.Project project)
        {
            if (manifest.ReleaseFolders != null && manifest.ReleaseFolders.Any())
            {
                var releaseService = factory.GetReleaseService();
                var releasePaths   = await releaseService.ListFoldersAsync(project.Id);

                foreach (var rp in manifest.ReleaseFolders)
                {
                    var existingItem = releasePaths.Value
                                       .FirstOrDefault(p => p.Path.Replace("\\", "/").Equals(rp.Path, StringComparison.OrdinalIgnoreCase));

                    if (existingItem == null)
                    {
                        existingItem = await releaseService.CreateFolderAsync(project.Id, rp.Path);
                    }
                    Logger.StatusBegin($"Creating permissions {rp.Path}...");
                    await ProvisionReleasePathPermissionsAsync(factory, project, rp, existingItem);

                    Logger.StatusEndSuccess("Succeed");
                }
            }
        }