protected async Task ExportProjectPermissionsAsync(AzDoServices.Dtos.Project project)
        {
            var graphService = GetGraphService();
            var groups       = await graphService.ListGroupsInProjectAsync(project.Id);

            var manifest = BaseSchema.GetEmpty(project.Name, ManifestKind.Permission);

            manifest.Permissions = new List <PermissionSchemaManifest>();

            foreach (var group in groups)
            {
                var memberCollection = await graphService.GetGroupMembersAsync(group.Descriptor);

                if (memberCollection != null && memberCollection.Members != null && memberCollection.Members.Any())
                {
                    var permissionManifest = PermissionSchemaManifest.Create(group.DisplayName);
                    manifest.Permissions.Add(permissionManifest);

                    await PopulateMembershipAsync(graphService, memberCollection, permissionManifest);
                }
            }

            if (manifest.Permissions.Any())
            {
                await this.fs.WriteManifestAsync(project, ManifestKind.Permission, Serialize(manifest));
            }
        }
示例#2
0
        public async Task WriteManifestAsync(AzDoServices.Dtos.Project project, ManifestKind manifest, string content)
        {
            var filePath = GetFilePath(project.Name, manifest);

            using var op = IcClient.BeginOperation($"Writing file [{filePath}] ...");

            await EnsureProjectDirectory(project);

            if (File.Exists(filePath))
            {
                op.Message("Deleting existing file...");
                File.Delete(filePath);
            }
            await File.WriteAllTextAsync(filePath, content);
        }