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  }