github.com/GoogleCloudPlatform/terraformer@v0.8.18/providers/azuredevops/project.go (about) 1 package azuredevpos 2 3 import ( 4 "context" 5 6 "github.com/microsoft/azure-devops-go-api/azuredevops/core" 7 ) 8 9 type ProjectGenerator struct { 10 AzureDevOpsService 11 } 12 13 func (az *ProjectGenerator) listResources() ([]core.TeamProjectReference, error) { 14 client, fail := az.getCoreClient() 15 if fail != nil { 16 return nil, fail 17 } 18 ctx := context.Background() 19 var resources []core.TeamProjectReference 20 pageArgs := core.GetProjectsArgs{} 21 pages, err := client.GetProjects(ctx, pageArgs) 22 for ; err == nil; pages, err = client.GetProjects(ctx, pageArgs) { 23 fetched := *pages 24 items := fetched.Value 25 resources = append(resources, items...) 26 if pages.ContinuationToken == "" { 27 return resources, nil 28 } 29 pageArgs = core.GetProjectsArgs{ 30 ContinuationToken: &pages.ContinuationToken, 31 } 32 } 33 return nil, err 34 } 35 36 func (az *ProjectGenerator) appendResource(resource *core.TeamProjectReference) { 37 id := *resource.Id 38 az.appendSimpleResource(id.String(), *resource.Name, "azuredevops_project") 39 } 40 41 func (az *ProjectGenerator) InitResources() error { 42 43 resources, err := az.listResources() 44 if err != nil { 45 return err 46 } 47 for _, resource := range resources { 48 az.appendResource(&resource) 49 } 50 return nil 51 }